我正在尝试为现有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
,肯定是在注销用户,但我想将呼叫到端点的位置正确。我还想确保在成功注销后刷新或销毁会话
最近有人告诉我,我可以(并且应该应该)为注销事件添加一个侦听器并在那里打电话。
在这种情况下,我将如何精确地执行该操作呢?
答案 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
}
}