3

如果登录用户不允许路由或路径,我需要在模板中隐藏一些链接。像这样的东西:

{% if allowedroute 'fos_user_security_logout' %}    
<a href="{{ path('fos_user_security_logout') }}" class="action-logout">
    {{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
    </a>
{% endif %}

如何确定登录用户的安全访问控制是否允许?可能有一些这样的功能:

$securityContext->isRouteGranted('routeName');
or
$securityContext->isUriGranted('uri/path');
4

2 回答 2

1

据我所知,没有办法检查从树枝访问路线的情况。但是,由于您必须使用用户角色设置 security.yml access_control 路由,因此您可以在模板中检查基于角色的身份验证:

{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
// logout link here
{% endif %}

它不是动态的,但除非您的路线发生很大变化,否则应该不是问题。

于 2011-08-02T22:09:29.213 回答
0

如果您希望 KnpMenuBundle 的项目隐藏 -您需要扩展菜单渲染器和菜单项类以支持权限。您还可以尝试查看SecurityExtraBundle以将权限放在控制器操作上并使用它来将安全权限绑定到路由 - 据我所知,Sf2 目前没有它。您可以在控制器内部尝试以下带注释的示例:

/**
 * @Route("/create", name="create_group")
 * @Secure(roles="ROLE_CREATE_GROUP")
 * @Template()
 */
public function createGroupAction(Request $request) {
于 2011-08-08T09:53:08.443 回答