注销事件(Laravel 7)
Posted
技术标签:
【中文标题】注销事件(Laravel 7)【英文标题】:Logout Event (Laravel 7) 【发布时间】:2020-11-02 21:29:06 【问题描述】:我是 Laravel 的新手,想知道如何设置一个函数来在事件上运行。具体来说,当用户注销时,如何调用函数?
最好的方法是什么,注册一个新的注销事件,或者 Laravel 7 是否已经有一个文件可以编辑以在注销时运行命令?
感谢您的帮助。
【问题讨论】:
【参考方案1】:你可以收听the Illuminate\Auth\Events\Logout
event。
【讨论】:
但是,应该注意,会话到期或关闭浏览器窗口等事件不会产生这些事件之一。如果你想做一些类似“谁在线”列表的事情,你需要一种不同的方法,比如 websockets。【参考方案2】:确实已经定义了一个注销事件,当用户注销时会触发该事件。它位于Illuminate\Auth\Events\Logout
。
你需要创建一个新事件Listener,然后告诉 Laravel 让该监听器订阅 Logout 事件,方法是将映射添加到 EventServiceProvider.php,如下所示:
class EventServiceProvider extends ServiceProvider
protected $listen = [
...
Logout::class => [
'App\Listeners\HandleLogout',
],
...
];
...
那么就可以在app/Listeners中创建一个Listener类,如下:
LogoutHandler.php
class LogoutHandler
/**
* Handle the event.
*
* @param Logout $event
* @return void
*/
public function handle(Logout $event)
$event->user; // The user that logged out
#event->guard; // The auth guard used
【讨论】:
以上是关于注销事件(Laravel 7)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 7 loginUsingId 不持久/导致注销