Laravel 注销时清除会话的侦听器不工作

Laravel Listener to clear Session on logout is not working

我想在我的 Laravel 项目中放置一个侦听器,它侦听用户注销并触发事件,例如重定向或清除会话。

我有这个代码,我添加到 EventServiceProvider.php:

<?php

namespace App\Providers;

use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'App\Events\SomeEvent' => [
            'App\Listeners\EventListener',
        ],
        'App\Listeners\Logout' => [
            'App\Listeners\ClearSessionAfterUserLogout'
        ],
    ];

    /**
     * Register any other events for your application.
     *
     * @param  \Illuminate\Contracts\Events\Dispatcher  $events
     * @return void
     */
    public function boot(DispatcherContract $events)
    {
        parent::boot($events);
    }
}

然后,我将以下代码放入 app/Listeners/ClearSessionAfterUserLogout:

<?php
namespace App\Listeners;
use Session;
use App\Classes\Helper;

class ClearSessionAfterUserLogout{
    public function handle(Logout $event){
        Session::flush();
        Session::set('configuration', NULL);
        Helper::unloadConfiguration();
        return redirect('/');
    }
}
?>

我放入 ClearSessionAfterUserLogout 的任何东西似乎都没有用。我知道函数 "unloadConfiguration()" 确实有效,因为我在其他地方使用过它。 (它只是清除指定的 Session 变量)。刷新会话也没有任何作用。因为当我使用另一个帐户登录时,仍然会根据前一个帐户的会话中的内容加载某些内容。

所以我的问题是:如何在用户注销时清除所有会话数据?

默认情况下 Laravel 会触发一个 Illuminate\Auth\Events\Logout 事件,因此您应该监听它:

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