Php Symfony-预登录事件侦听器
我需要在登录过程之前/登录过程开始时执行一些操作。是否存在任何预登录事件,或者如何实现它 我使用的是Symfony3,我有一个表单登录和OAuth登录(HWIOAuthBundle)Php Symfony-预登录事件侦听器,php,symfony,login,oauth,Php,Symfony,Login,Oauth,我需要在登录过程之前/登录过程开始时执行一些操作。是否存在任何预登录事件,或者如何实现它 我使用的是Symfony3,我有一个表单登录和OAuth登录(HWIOAuthBundle) 我试过了,但是OAuth登录不起作用。或者我如何为OAuth登录实现它呢?通常,symfony中的所有登录内容都由内核的侦听器执行。我还没有使用HWIOAuthBundle包,但它似乎也只使用了Symfony安全组件 如果您只想在登录/身份验证发生之前执行某些操作,则只需将事件侦听器注册到内核.request,其优
我试过了,但是OAuth登录不起作用。或者我如何为OAuth登录实现它呢?通常,symfony中的所有登录内容都由
内核的侦听器执行。我还没有使用HWIOAuthBundle包,但它似乎也只使用了Symfony安全组件
如果您只想在登录/身份验证发生之前执行某些操作,则只需将事件侦听器注册到内核.request
,其优先级高于防火墙
侦听器
您可以按照Symfony文档()中的说明执行此操作。首先在src/AppBundle/EventListener/yourlister.php
中创建事件侦听器类:
namespace-AppBundle\EventListener;
使用Symfony\Component\HttpKernel\Event\GetResponseEvent;
给你的听众上课
{
onKernelRequest公共函数(GetResponseEvent$事件)
{
//做事
}
}
然后在app/config/services.yml
文件中注册您的服务:
services:
AppBundle\EventListener\YourListener:
tags:
- { name: kernel.event_listener, event: kernel.request, priority: 9 }
根据防火墙的优先级为8。因此,事件侦听器的优先级应该高于登录之前要执行的优先级(我在上面的示例中使用了9)。通常,symfony中的所有登录内容都是由内核的侦听器执行的。request
事件,主要是在symfony安全组件的防火墙
侦听器中执行的。我还没有使用HWIOAuthBundle包,但它似乎也只使用了Symfony安全组件
如果您只想在登录/身份验证发生之前执行某些操作,则只需将事件侦听器注册到内核.request
,其优先级高于防火墙
侦听器
您可以按照Symfony文档()中的说明执行此操作。首先在src/AppBundle/EventListener/yourlister.php
中创建事件侦听器类:
namespace-AppBundle\EventListener;
使用Symfony\Component\HttpKernel\Event\GetResponseEvent;
给你的听众上课
{
onKernelRequest公共函数(GetResponseEvent$事件)
{
//做事
}
}
然后在app/config/services.yml
文件中注册您的服务:
services:
AppBundle\EventListener\YourListener:
tags:
- { name: kernel.event_listener, event: kernel.request, priority: 9 }
根据防火墙的优先级为8。因此,事件侦听器的优先级应该高于登录之前要执行的优先级(我在上面的示例中使用了9)。这可能会解决我的问题,但如何强制它仅在身份验证之前运行?现在它在每个请求中运行。防火墙
侦听器也在每个请求中执行。您到底想做什么(即登录前要执行哪些操作)?我用会话id记录了一些关于未登录用户的操作,我想用登录用户填写这些记录,但问题是会话id在身份验证后会更改。您可以注册一个侦听器,如我在回答中所述,只将会话id存储在$request->attributes
参数包中,因此,您可以稍后访问它,并为security.authentication.success
事件创建一个额外的侦听器,以便在成功登录后执行实际的日志记录。这可能会解决我的问题,但如何强制它仅在验证之前运行?现在它在每个请求中运行。防火墙
侦听器也在每个请求中执行。您到底想做什么(即登录前要执行哪些操作)?我用会话id记录了一些关于未登录用户的操作,我想用登录用户填写这些记录,但问题是会话id在身份验证后会更改。您可以注册一个侦听器,如我在回答中所述,只将会话id存储在$request->attributes
参数包中,因此,您可以稍后访问它,并为security.authentication.success
事件创建一个额外的侦听器,以便在成功登录后执行实际的日志记录。