首页 > 解决方案 > 如何覆盖 laravel 注销核心事件?

问题描述

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

标签: laraveleventsoverridingcore

解决方案


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

  1. 覆盖loggedOut()方法AuthenticatesUsers

您将必须创建自定义事件并覆盖loggedOut()方法AuthenticatesUsers以手动触发它,如下所示:

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

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

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

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

以下是如何覆盖警卫:https ://laravel.com/docs/7.x/authentication#adding-custom-guards


推荐阅读