【发布时间】:2016-11-29 22:25:12
【问题描述】:
我想在我的 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 session events listener