1.Laravel/Breeze ログイン画面
![](https://static.wixstatic.com/media/8bea20_cb4704e313894ae48ccf7486c640022c~mv2.png/v1/fill/w_898,h_730,al_c,q_90,enc_auto/8bea20_cb4704e313894ae48ccf7486c640022c~mv2.png)
登録済みメールアドレスとパスワードでログインを行います。
ログインに成功すると「管理画面(Dashboard)」に遷移します。
ログインに失敗すると「ログイン情報が存在しません」とエラー表示されます。
適正でない書式で入力を行うとバリデーションが機能してエラー表示されます。
「パスワードを忘れた?」をクリックするとパスワードリセットメール送信画面(forget-password)画面に遷移します。
2.ルート
http://<URL>/login をブラウザで指定するとログイン画面に遷移します。
ルートを確認します。
\routes\auth.php (全景)
![](https://static.wixstatic.com/media/8bea20_afcc196e692a450c95c8634ff42951dd~mv2.png/v1/fill/w_900,h_1300,al_c,q_90,enc_auto/8bea20_afcc196e692a450c95c8634ff42951dd~mv2.png)
Routeには適用Middlewareのグルーピングがされています。
/login は'guest'Middlewareに分類され、get、post がそれぞれ定義されています。
![](https://static.wixstatic.com/media/8bea20_145b426dd83a49de91ca5e55232de367~mv2.png/v1/fill/w_653,h_94,al_c,q_85,enc_auto/8bea20_145b426dd83a49de91ca5e55232de367~mv2.png)
いずれもAuthenticatedSessionControllerに回され、それぞれcreate()、store()メソッドで処理されます。
*****************
Route::get('login', [AuthenticatedSessionController::class, 'create'])
->name('login');
*****************
get('login') は名称'login'が与えられています。
3.コントローラ
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (全景)
![](https://static.wixstatic.com/media/8bea20_dd85a06d511d4a4dbca5110070093884~mv2.png/v1/fill/w_723,h_1000,al_c,q_90,enc_auto/8bea20_dd85a06d511d4a4dbca5110070093884~mv2.png)
create、store、destroy メソッドが登録されています。
3-1. createメソッド
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (1/3)
![](https://static.wixstatic.com/media/8bea20_4ba66aa3907d4c6e9a44c2307a592e12~mv2.png/v1/fill/w_658,h_451,al_c,q_85,enc_auto/8bea20_4ba66aa3907d4c6e9a44c2307a592e12~mv2.png)
Viewクラスからviewメソッドを引用して'auth.login'を表示させています。auth.loginは後程解説します。
3-2. storeメソッド
\app\Http\Controllers\Auth\AuthenticatedSessionController.php (2/3)
![](https://static.wixstatic.com/media/8bea20_72adda4ee0004a1fa9c7d98ef051c8c5~mv2.png/v1/fill/w_619,h_230,al_c,q_85,enc_auto/8bea20_72adda4ee0004a1fa9c7d98ef051c8c5~mv2.png)
①引数に使われている(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)
![](https://static.wixstatic.com/media/8bea20_5c39aa6d4e484b3891e3006eb2669066~mv2.png/v1/fill/w_642,h_290,al_c,q_85,enc_auto/8bea20_5c39aa6d4e484b3891e3006eb2669066~mv2.png)
ログアウトの際に指定されたRouteのメソッドです
******************
Route::post('logout', [AuthenticatedSessionController::class, 'destroy']) ->name('logout');
******************
以上/login のコントローラー解説でした。
今回の要点となるstore()メソッドの中にはLoginRequestクラスの関数が引用されています。 次回はLoginRequestクラスの解説とLaravelの認証機能の中核となっているGuardとプロバイダの仕組みを確認します。
Comments