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
謝謝!這解決了它。它現在正在工作! –