1.Laravel/Breeze ログイン画面
登録済みメールアドレスとパスワードでログインを行います。
ログインに成功すると「管理画面(Dashboard)」に遷移します。
ログインに失敗すると「ログイン情報が存在しません」とエラー表示されます。
適正でない書式で入力を行うとバリデーションが機能してエラー表示されます。
「パスワードを忘れた?」をクリックするとパスワードリセットメール送信画面(forget-password)画面に遷移します。
2.ルート
http://<URL>/login をブラウザで指定するとログイン画面に遷移します。
ルートを確認します。
\routes\auth.php (全景)
Routeには適用Middlewareのグルーピングがされています。
/login は'guest'Middlewareに分類され、get、post がそれぞれ定義されています。
いずれもAuthenticatedSessionControllerに回され、それぞれcreate()、store()メソッドで処理されます。
*****************
Route::get('login', [AuthenticatedSessionController::class, 'create'])
->name('login');
*****************
get('login') は名称'login'が与えられています。
3.コントローラ
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (全景)
create、store、destroy メソッドが登録されています。
3-1. createメソッド
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (1/3)
Viewクラスからviewメソッドを引用して'auth.login'を表示させています。auth.loginは後程解説します。
3-2. storeメソッド
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (2/3)
①引数に使われている(LoginRequest $request) LoginRequestは FormRequestを継承したクラスです。
②$request にはhttp://<URL>/loginからPOSTで送られてきたデータがオブジェクトとして格納されています。
③: RedirectResponse はこのメソッドの返り値がRedirectResponseクラスのインスタンスであることを明示しています。
④$requestに対してauthenticate()処理を加えています。 authenticate()はapp\Http\Requests\Auth\LoginRequest.php にPublic function として定義されています。
⑤session()->regenerate()でセッションIDの再生成を行っています。悪意のあるユーザーのアプリケーションに対するセッション固定攻撃を防ぐためです。
⑥redirect()->intended(route('dashboard', absolute: false))について
redirectヘルパはRedirectResponseインスタンスを生成してリダイレクト先のURLにしかりしたヘッダを渡します。
intendedメソッドは、リダイレクトが認証ミドルウェアによってインターセプトされる前に、アクセスしようとしたURLへユーザーを誘導します。
3-3. destroyメソッド
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (3/3)
ログアウトの際に指定されたRouteのメソッドです
******************
Route::post('logout', [AuthenticatedSessionController::class, 'destroy']) ->name('logout');
******************
以上/login のコントローラー解説でした。
今回の要点となるstore()メソッドの中にはLoginRequestクラスの関数が引用されています。 次回はLoginRequestクラスの解説とLaravelの認証機能の中核となっているGuardとプロバイダの仕組みを確認します。
Comentários