有没有办法监听注销事件并采取重新定位auth laravel等决策?我知道有一些登录/注销侦听器,但重定向不起作用:
class LogSuccessfulLogout
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param Logout $event
* @return void
*/
public function handle(Logout $event)
{
if($event->user) {
$new = Auth::user()->cars()->where('status', 1)->count();
$inProgress = Auth::user()->cars()->where('status', 2)->count();
if($new > 0 || $inProgress > 0){
redirect('/');
}
}
}
}
答案 0 :(得分:2)
这是默认的Laravel 5.2 AuthController
中调用的默认注销函数public function logout()
{
Auth::guard($this->getGuard())->logout();
return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
}
因此,您可以设置redirectAfterLogout
属性以使用AuthController中的以下代码更改重定向网址,
private $redirectAfterLogout = '/new-logout-redirect';
或者您可以选择简单地覆盖注销功能。 重定向不会直接从您的监听器中运行。
这是修改后的logout函数和您的逻辑,您可以将它放在AuthController中,
public function logout()
{
Auth::guard($this->getGuard())->logout();
$new = Auth::user()->cars()->where('status', 1)->count();
$inProgress = Auth::user()->cars()->where('status', 2)->count();
if($new > 0 || $inProgress > 0){
return redirect('/');
}
return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
}