条件全球路线

时间:2016-05-18 14:33:50

标签: symfony routing

我有一个教程页面,需要全局重定向 如果他们没有通过数据库检查,它将发送给用户/tutoroalUser->passedTutorial()

我可以使用调用控制器/模型方法的路由配置来实现吗?

2 个答案:

答案 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 ,以便它再次检查请求/用户并执行重定向。