分享一個session過期後根據guard跳轉的實現

liziyu發表於2021-10-09

在下不才,剛學習PHP不久,(大佬請閉眼)!
Laravel8.5版本。
實現功能: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')); //其中route('login')為後臺的預設登陸入口
}
/**
 * 重定向跳轉至會員中心
 * @param array $guardArr
 * @return string
 */
protected function redirectTo($guardArr = [])
{
    if(in_array('member',$guardArr)){  //其中'member'為前臺的guard守衛名
        return route('member.login'); //會員中心的登陸入口
    }
}

謝謝大家,這也是東拼西拼的,分享給像我一樣的新手吧!!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章