Laravel Auth機能の処理の流れ

1、ログインしていないといけないページに直打ち等で行こうとしたときには「/login」に飛ばす処理

まずはデフォルトで生成されているhomeコントローラー

class HomeController extends Controller
{
   //↓でコンストラクタとしてミドルウェアauthを指定している
   public function __construct()
   {
       $this->middleware('auth');
   }
   
   public function index()
   {
       return view('home');
   }
}

上記の記述から、authミドルウエア自体はapp\Http\Kernel.php内で以下のように設定されている

protected $routeMiddleware = [
        //今回はこれ↓↓をみる
       'auth' => \App\Http\Middleware\Authenticate::class,
       'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
       'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
       'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
   ];

そして最後に\App\Http\Middleware\Authenticate::classを確認すると

public function handle($request, Closure $next, $guard = null)
   {
        //もし、ログインしてなかったら
       if (Auth::guard($guard)->guest()) {
            
           if ($request->ajax() || $request->wantsJson()) {
               return response('Unauthorized.', 401);
           } else {
                 // /loginにリダイレクト
               return redirect()->guest('login');
           }
       }
       return $next($request);
   }

以上のようにな処理の流れになっている

※ここで登場するguard、guestについて

guard・・・各リクエストごとにどのようにユーザーを認証するかを定義している

guest・・・ユーザーがログインしていないことを確認できる

例)Auth::guest()   でログインしていなかったらtrueを返す(ちなみにguestをcheckにすると逆の動きをし、ログインしていればtrueを返す動きになる)

この記事が気に入ったらサポートをしてみませんか?