top of page
執筆者の写真英伸 後

Laravel/Breeze の仕組み ~5 ログイン機能の分析①


 
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とプロバイダの仕組みを確認します。











閲覧数:11回0件のコメント

最新記事

すべて表示

Comentários


bottom of page