我需要在检查用户的凭据是否正确之前运行一些代码.目前,我正在通过触发事件的自定义事件侦听器实现此目的,kernel.request并检查请求的URL是否与security.yml的check_path设置匹配.但这是低效的,因为它运行在每个请求上.我知道这个onSecurityInteractiveLogin事件,但我相信在成功登录尝试后会发生火灾.有谁知道是否有预登录事件,或者我可以自己发送自定义事件?
Ste*_*nte 12
因此,没有"官方"登录前事件.但幸运的是,由于Symfony2是如此可扩展,因此设置一个并不难.诀窍是使用您自己的服务来处理身份验证.
使用登录表单时,Symfony使用此类:
Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener
如果覆盖security.authentication.listener.form.class参数(最初定义Symfony\Bundle\SecurityBundle\Resources\config\security_listeners.xml),则可以使用扩展的自定义侦听器UsernamePasswordFormAuthenticationListener.
剩下要做的就是覆盖attemptAuthentication()调度自定义事件的方法.
(实际上你还需要将事件调度程序存储为类属性__construct())
此方法应与其它认证方法的工作-所有你需要做的就是修改相应的监听器(即BasicAuthenticationListener,X509AuthenticationListener等)
| 归档时间: |
|
| 查看次数: |
3700 次 |
| 最近记录: |