laravel8.x 会员中心or后台Session超时跳转各自登陆入口
这个费了点时间,所以记录下:
App\Exceptions\Handler.php
中重写两个方法如下:
/**
* Convert an authentication exception into a response.
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Auth\AuthenticationException $exception
* @return \Symfony\Component\HttpFoundation\Response
*/
protected function unauthenticated($request, AuthenticationException $exception)
{
return $request->expectsJson()
? response()->json(['message' => $exception->getMessage()], 401)
: redirect()->guest($this->redirectTo($exception->guards()) ?? route('login'));
}
/**
* 重定向跳转至会员中心
* @param array $guardArr
* @return string
*/
protected function redirectTo($guardArr = [])
{
if(in_array('member',$guardArr)){
return route('member.login');
}
}
其中关键点是拿到guards()
里的门卫名称,根据此来判断:$exception->guards()
得到数据类似['admin','user']
再据此判断。