如何在Laravel Fortify中进行身份验证后运行自定义代码? [英] How to run custom code after authentication in Laravel Fortify?
本文介绍了如何在Laravel Fortify中进行身份验证后运行自定义代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用带有Fortify的Laravel 8。我的网站上的用户可以在登录前执行创建数据库记录的操作,这些记录按他们的会话ID关联。一旦他们登录或注册,我需要按会话ID查找记录并为其分配用户ID。
作为Laravel的新手,我不知道(也找不到任何其他与Fortify相关的问题)在哪里放置代码来完成这项工作。请谁给我指个方向好吗?
推荐答案
- 使用内置Laravel身份验证事件
- 为
IlluminateAuthEventsRegistered
或IlluminateAuthEventsLogin
事件创建new Event listener。这位听众将为您办理海关业务。Login
事件已经将用户设置为参数,因此它将在您的监听器中可用。 - 编辑
EventServiceProvider
以根据documentation添加新的监听程序配置 - 然后您需要您的会话ID。如果您不能轻松覆盖默认的Login事件来添加自定义参数,则可能需要为您的监听器创建自己的事件。因为不建议使用来自事件侦听器的会话或请求帮助器(请参阅下面的注释)(经过一些研究后编辑行)
- 运行
composer dump-autoload && PHP artisan clear-compiled
2-使用Fortify
根据documentation,您可以使用Fortify::authenticateUsing
方法覆盖登录过程。您还可以将其挂钩到registration process。
从这里您可以做什么:
- 保持
authenticateUsing
或注册过程不变(或复制默认行为,因为您不需要更改Fortify提供的身份验证过程) - 添加到您想要的(登录成功或注册成功),仅在成功登录和/或成功注册时才会触发的新Laravel event
- 然后您可以处理来自事件侦听器的自定义查询。您的事件可以接收相应的用户,以及来自
Fortify::authenticateUsing
或request()
中的$request
参数或会话帮助器的会话参数。
注意:您可能需要将完整会话ID作为事件参数发送,以便在侦听器中可用。
如果您使用排队事件,并且您的驱动程序不是sync
。因此,您有另一台服务器监听和执行排队的作业/事件,或者是CRON或主管。在这种情况下,您的";任务服务器&或";侦听器&上的Laravel会话帮助器可能无法按预期工作。因为正在运行侦听器业务的是另一个PHP进程,而不是来自用户的进程。
这篇关于如何在Laravel Fortify中进行身份验证后运行自定义代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文