如何在Symfony2中禁止授权用户访问?

时间:2016-03-13 14:38:19

标签: php symfony fosuserbundle

我是Symfony2的初学者。现在我尝试使用FOSUserBundle完成编写授权。 我有一个问题,授权用户可以访问登录页面或注册页面。我可以在配置中更改此功能,还是必须在控制器中进行检查? 谢谢

PS我的意思是security.yml中的这个部分:

access_control:
    - { path: /new, role: ROLE_USER }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }

2 个答案:

答案 0 :(得分:1)

您可以通过创建一个hook into the FOSUserBundle controllers的事件监听器来解决它。要注册,您可以使用fos_user.registration.initialize事件。在您的监听器中,您可以检查用户是否已经过身份验证,如果是,则重定向到您喜欢的任何路由(例如,到主页)。请参阅此answer以查看示例。

对于登录路由(/login),您可以覆盖默认的FOSUserBundle SecurityController并检查用户是否经过身份验证并执行重定向。请参阅此example

答案 1 :(得分:0)

您可以尝试使用此处的表达式:http://symfony.com/doc/current/cookbook/security/access_control.html#book-security-allow-if

表达可能是:

"is_anonymous() and and not is_remember_me() not is_fully_authenticated()"