Laravel注销,添加一个侦听器

时间:2019-03-11 13:15:37

标签: php laravel

我正在尝试为现有laravel站点(laravel 5.2)的注销功能添加一些逻辑,但是它不像登录时那样简单易用。

客户端的现有注销工作正常,但是我要做的就是向我的Cognito实例添加调用以将用户从其Cognito会话中注销。基本上,当用户单击注销时,我想像现在一样将其注销该网站,但还要点击我的注销端点以进行认知

我的困惑来自这样一个事实,即现有的auth路由和控制器并不完全匹配。

routes.api.php

Route::get('logout', 'API\Auth\AuthController@getLogout');

routes.auth.php

Route::get('logout', 'Auth\AuthController@getLogout')
    ->name('auth.logout');

Auth / AuthController.php (在我的构造函数中)

$this->middleware('guest', ['except' => 'getLogout']);

我的注销链接命中site/logout,肯定是在注销用户,但我想将呼叫到端点的位置正确。我还想确保在成功注销后刷​​新或销毁会话

最近有人告诉我,我可以(并且应该应该)为注销事件添加一个侦听器并在那里打电话。

在这种情况下,我将如何精确地执行该操作呢?

1 个答案:

答案 0 :(得分:1)

EventServiceProvider中,您可以将侦听器附加到注销事件,并处理侦听器中的所有注销逻辑。

protected $listen = [
    'Illuminate\Auth\Events\Logout' => [
        'App\Listeners\LogSuccessfulLogout',
    ],
];

然后,您可以在App\Listeners内创建LogSuccessfulLogout侦听器:

    namespace App\Listeners;
    use Illuminate\Auth\Events\Logout;

    class LogSuccessfulLogout
    {
        /**
         * Create the event listener.
         *
         * @return void
         */
        public function __construct()
        {
            //
        }

        /**
         * Handle the event.
         *
         * @param  Logout  $event
         * @return void
         */
        public function handle(Logout $event)
        {
            // Do your logic
        }
    }

来源:https://laravel.com/docs/5.2/authentication#events