来自.NET背景,我一直在研究OnSessionExpired
或类似事件。我期望此事件或者是用户手动注销时的事件之外存在,或者是当会话在服务器端 上到期时以及用户手动退出时都将运行此事件。注销。没关系。
在Laravel中用户会话期满时,我们是否可以挂入一个事件?
谢谢!
答案 0 :(得分:1)
Laravel有自己的auth events。你可以听那些。有关更多详细信息,请参见documentation。
这些事件还为您提供了可以使用的有效负载。例如,登出事件确实为您提供了有关登出用户和从其登出的保护措施的有效负载。
答案 1 :(得分:1)
对于问题的第一部分,您可以按照Mihir所述在用户注销时收听Illuminate\Auth\Events\Logout
事件。
对于检测会话何时过期,没有任何内置功能,因为Laravel支持许多不同的会话驱动程序,其中一些驱动程序(例如Memcached和Redis都是自到期的)。对于不会自行失效的驱动程序(例如文件驱动程序),该驱动程序上有一个gc()
方法可用于垃圾收集过期的会话文件,但不会发出任何事件。
如果您希望事件过期,则必须自己构建该系统。我建议创建Web中间件来跟踪活动用户,并创建计划的作业/命令来循环并修剪过期的作业/命令,并为找到的每个作业/事件触发一个事件。