如果登录用户不允许路由或路径,我需要在模板中隐藏一些链接。像这样:
{% if allowedroute 'fos_user_security_logout' %}
<a href="{{ path('fos_user_security_logout') }}" class="action-logout">
{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
</a>
{% endif %}
如何确定登录用户的安全access_control是否允许? 可能有这样的功能:
$securityContext->isRouteGranted('routeName');
or
$securityContext->isUriGranted('uri/path');
答案 0 :(得分:1)
据我所知,没有办法检查来自树枝的路线。但是,由于您必须使用用户角色设置security.yml access_control路由,因此您可以在模板中检查基于角色的身份验证:
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
// logout link here
{% endif %}
它不是那么动态,但除非你的路线发生很大变化,否则它应该不是问题。
答案 1 :(得分:0)
如果你想为KnpMenuBundle隐藏物品 - you need to extend menu renderer and menu item classes to support permissions。您还可以尝试查看SecurityExtraBundle以将权限置于控制器操作上并使用它来将安全权限绑定到路由 - 据我所知,Sf2目前还没有它。您可以在控制器内部尝试以下带注释的示例:
/**
* @Route("/create", name="create_group")
* @Secure(roles="ROLE_CREATE_GROUP")
* @Template()
*/
public function createGroupAction(Request $request) {