我有一个教程页面,需要全局重定向
如果他们没有通过数据库检查,它将发送给用户/tutoroal
:
User->passedTutorial()
我可以使用调用控制器/模型方法的路由配置来实现吗?
答案 0 :(得分:2)
这听起来更像是一个安全上下文/问题。您是否考虑过创建自定义角色,例如ROLE_USER_PASSED
?
然后,您可以在security.yml中检查此角色,或使用@Security("has_role('ROLE_USER_PASSED')")
答案 1 :(得分:0)
您可以使用@Security注释执行此操作,如:http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/security.html所述。
特别是:
/**
* @Security("user.passedTutorial()")
*/
<强> UPD。强>
最后,可以使用security.yml的 access_control 部分中的表达式来解决问题:http://symfony.com/doc/current/cookbook/security/access_control.html#securing-by-an-expression
通过这样做,仍然需要在使用过的防火墙(http://symfony.com/doc/current/reference/configuration/security.html)中实施 access_denied_handler ,以便它再次检查请求/用户并执行重定向。