0
我想在我的Laravel项目中放置一个监听器,监听用户注销并触发事件,然后,例如重定向或清除会话。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);
}
}
然后,我有以下的代码把我的应用程序/听众/ 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变量)。刷新会话也不会做任何事情。因为当我使用其他帐户登录时,某些内容仍然基于前一个帐户在会话中的内容加载。
所以我的问题:如何清除用户注销时的所有会话数据?
这给了我下面的错误,当我退出:FatalThrowableError在ClearSessionAfterUserLogout.php行8: 类型错误:参数1传递给App \ Listeners \ ClearSessionAfterUserLogout :: handle()必须是App \ Listeners \ Logout的一个实例,Illuminate \ Auth \ Events \ Logout的实例 –
在你的** handle()中删除'Logout $ event'作为一个参数表。 ** 方法。它应该像这个'public function handle(){'。 – TheFallen
谢谢!这解决了它。它现在正在工作! –