我在 symfony2 中实现了一个登录系统,其中包括 security.xml 配置和一些自定义内容...
在成功登录时,symfony 将用户发送到一个特定的 Controller ,我在其中编写了一些代码来将一些额外的数据填充到 session 中。到目前为止,我们从登录页面启动应用程序时一切正常。
但在某些情况下,当我们访问某些需要身份验证的页面时,symfony 会强制我们登录页面。成功登录后,它会将我们直接带到该页面(我们来自的页面)而不是登录页面。在这种情况下,我们在着陆页上编写的额外代码不会被执行,因此该应用程序不会进一步按预期运行。
我的问题是要克服这个问题...symfony2 中是否存在任何钩子(Hook)/设置/函数,通过它我可以在所有成功登录时执行一组代码,而不管用户被重定向到哪个页面。
最佳答案
您可以实现成功处理程序。
编写一个实现
AuthenticationSuccessHandlerInterface
的类:将其定义为服务(您可以注入(inject)其他服务,如 doctine 或安全上下文,在您的情况下为 Session)
在安全配置中添加处理程序服务,例如:
firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false secured_area: pattern: ^/ anonymous: ~ form_login: login_path: login check_path: login_check success_handler: some.service.id logout: path: logout target: /
检查 this一个完整的例子和reference所有 symfony2 安全配置选项的文档(您也可以配置 failure_handler)。
希望对你有帮助
关于php - 如何在登录时向 symfony2 上的 session 注入(inject)特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396893/