Laravel サーバサイド

[入門者向け]Laravel UIのAuthを使ってユーザーの認証をする方法

どうも、シローです。

普段はサーバサイドやフロントサイドの開発をしております。

今回はLaravel UIの認証機能でユーザーを認証する方法をご紹介します。

この記事の対象者

  • Laravelを触り始めた人
  • Laravel UIの--authオプションでセットアップした認証機能を使ってユーザーの認証をしたい人

前回の内容

まずはユーザーを登録してログイン状態にする

--authオプションを入れた状態では、http://localhost/registerでユーザーの登録ができます。

その後に自動でログイン状態になります。

  1. ユーザー登録

2. ユーザー登録画面

3. ユーザー登録後

ルーティングに認証用のミドルウェアを適用する

認証用のミドルウェアはapp/Http/Kernel.phpauthという名前で定義されています。

このミドルウェアをルーティングに適用するには次のようにします。

app/routes/web.php

middleware('auth')という記述で認証用のミドルウェアを適用したことになります。

ミドルウェアの役割や実装方法については、こちらの記事(https://shiro-secret-base.com/laravel-middleware-beginner/)をご覧ください。

ユーザーが認証されているかを検証する

上記のルーティングの例では、/boardにPOSTメソッドでリクエストを送るとユーザーが認証されているかをチェックします。

認証されている場合は、リクエストの処理を行います。

認証されていない場合は、認証エラーを出力します。

認証部分はvendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.phpで以下のように記述されています。

authenticateメソッドでユーザーが認証されていない場合は、unauthenticate関数が呼ばれます。

その処理の内部では、AuthenticationExceptionエラーが出力されます。

その引数にはリダイレクトパスが指定されており、app/Http/Middleware/Authenticate.phpredirectToで上書きされて、デフォルトでは/loginが設定されています。

つまり、認証エラーが起きたらloginにリダイレクトします。

認証エラーの動作

まずは認証エラーの振る舞いです。

未ログインの場合は、「送信」を押してもログイン画面にリダイレクトされます。

認証成功の動作

次に認証成功の振る舞いです。

ユーザー情報を取得できているので、投稿が成功しています。

 

おわり

以上、Laravel UIの--authオプションを使った認証機能の検証でした。

ユーザー登録からログイン状態のチェックまで、一から実装しなくても基本的な機能を提供できているかと思います。

カスタマイズをしたい場合は既存のライブラリの処理を把握する必要があるので、呼び出しているソースコードの中身を見てみるのをお勧めします。

本記事がLaravelの認証機能を使いたい人に少しでも参考になれば幸いです。

-Laravel, サーバサイド

© 2024 Shiro's secret base