就我而言,当用户登录我们的系统时,我们必须弄清楚他/她来自哪个来源。我们必须在login_path,failure_path。
中添加一个动态变量我搜索了很多,但没有找到有用的答案,谢谢。
答案 0 :(得分:0)
实现此目的的最简单方法是创建两个类,然后将它们作为security.yml
中的处理程序服务引用。
首先,请查看Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler
和Symfony\Component\Security\Http\Authentication\DefaultAuthenticationFailureHandler
。这些是在身份验证成功或失败时调用的类,并从security.yml
配置传递相关选项。
创建自己的类并从这些默认值扩展,用您自己的业务逻辑(即动态变量)覆盖onAuthenticationSuccess
和onAuthenticationFailure
方法。然后将它们设置为服务:
my.authentication.success_handler:
class: My\Authentication\SuccessHandler
arguments: [ "1", "2", "3" ]
my.authentication.failure_handler:
class: My\Authentication\FailureHandler
arguments: [ "4", "5", "6" ]
然后在security.yml:
security:
firewalls:
my_firewall:
form_login:
success_handler: my.authentication.success_handler
failure_handler: my.authentication.failure_handler
然后在您登录时,将调用相关的onAuthenticationX
方法。您可能希望返回一个重定向响应,如默认值,但添加了动态变量。
如果您想要一种简单的方法来维护/检索默认处理程序中的选项,我建议您从Symfony Cookbook中查看Service Decoration。
答案 1 :(得分:0)
为了帮助他人,我列出了我的问题。
无需在防火墙路径中添加变量,它支持路由名称 使用变量,symfony将从url路径获取所有变量,并将它们填入所有防火墙路径。
将全局变量添加到所有路由。
symfony中有一个示例说明如何向所有路由添加额外的全局变量。结帐此课程Symfony\Component\HttpKernel\EventListener\LocaleListener