Symfony2可以检查路由是否对当前登录的用户有效

时间:2013-08-02 00:41:05

标签: php symfony

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

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

抱歉我的英文。

1 个答案:

答案 0 :(得分:3)

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

这意味着,如果是这种情况,那么您就是在服务中。

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

#MenuBuilder.php

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

然而,您需要使用注释来保护控制器中的路径:

    /**
     * Administration index page
     *
     * @Route("/administration/index", name="administration_index")
     * @Template
     * @Secure(roles="ROLE_ADMIN")
     *
     * @return array|Response
     */