如何覆盖 laravel 注销核心事件?

How can I override laravel logout core event?

我正在尝试广播 Illuminate\Auth\Events\Logout。是否可以覆盖或扩展此核心事件以包含 BroadcastOn 方法?

您无法覆盖核心注销事件。关于这个问题有两种方法。无论哪种方式,您都必须触发自定义事件。

  1. 覆盖 AuthenticatesUsers 中的 loggedOut() 方法:

您必须创建自定义事件并重写 AuthenticatesUsers 中的 loggedOut() 方法才能像这样手动触发它:

protected function loggedOut(Request $request)
{
    event(new CustomLogoutEvent());
}

这将触发核心事件和您的自定义事件。

  1. 覆盖SessionGuard以覆盖logout()(冗长且不建议):

logout() in SessionGuard 是触发核心注销事件的地方。覆盖它以仅触发您的自定义事件。这样只会触发一个注销事件。

下面是覆盖守卫的方法:https://laravel.com/docs/7.x/authentication#adding-custom-guards