0

Symfony2 可以检查路由是否对当前登录的用户有效,我需要构建一个动态菜单。例如,我想检查用户(角色)是否可以访问这些路由,只是为了表明您可以访问路由。

$menu->addChild('Home', array ('route' => 'homepage'));
$menu->addChild('About Me', array (
    'route' => 'page_show'
    'routeParameters' => array ('id' => 42)
));

对不起我的英语不好。

4

1 回答 1

3

看起来(从代码中)您正在使用 KnpMenuBundle。

这意味着,如果是这样的话,你就在服务中。

只需在您的 MenuBuilder 服务中注入该security_context服务,这样您就可以检查您的用户是否可以访问链接。

#MenuBuilder.php

if $securityContext->getToken()->getUser() && $securityContext->isGranted('ROLE_ADMIN') {
    $menu->addChild('Administration', array("route" => ......);
}

但是,您需要使用 annotation 保护控制器中的路由:

    /**
     * Administration index page
     *
     * @Route("/administration/index", name="administration_index")
     * @Template
     * @Secure(roles="ROLE_ADMIN")
     *
     * @return array|Response
     */
于 2013-08-02T09:29:14.417 回答