我是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 }
答案 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()"