Laravelの認証機能概観
Laravelでは、認証機能がほぼ自動化されています。ここでいう認証機能というのは、ログイン機能、ログアウト機能のみならず、ログイン状態の維持とチェック、ユーザー登録機能、パスワードを忘れた場合のパスワードリセットURLのメール送信などが含まれます。これらを、コマンドを実行するだけで、ほぼコーディングなしに実現できます。
手順は次の通りです。
- laravel/uiパッケージの追加
- 認証機能に関するファイル類の追加
- データベースへのテーブルの追加
この手順に従ってfirstlaravelプロジェクトに認証機能を追加していきます。
Laravel認証機能のプロジェクトへの追加
では、具体的に説明していきましょう。
手順1:laravel/uiパッケージの追加
第8回の冒頭部分で、「Laravel7がリリース」と題してLaravel7での変更点をまとめています。その中で挙げている、「認証関係のスキャフォールディングを別パッケージ化」の内容が今回に関係します。
Laravelのバージョン5までは、UI関連のスキャフォールディングがLaravelプロジェクトにデフォルトで含まれていました。これが、バージョン6でlaravel/uiと別パッケージへと分離されました。その流れを受け、バージョン7では認証関連のスキャフォールディングも分離され、Laravelプロジェクトに含まれなくなりました。そこで、これらのパッケージを別途追加するところから始める必要があります。パッケージの追加なので、Composerの出番です。firstlaravelディレクトリで次のコマンドを実行してください。
composer require laravel/ui
composer.jsonとcomposer.lockが更新されて、必要なパッケージがダウンロードされます。
手順2:認証機能に関するファイル類の追加
手順1で認証関係のスキャフォールディングが可能となったので、実行して、認証関係のファイル類を追加しましょう。同じく、firstlaravelディレクトリで次のコマンドを実行してください。
php artisan ui vue --auth
コマンド実行によって、プロジェクト内に次の変更が成されます。
- app/Http/Controllers/Authディレクトリが作成され、中に認証関係のコントローラファイルが追加される。
- app/Http/Controllers/HomeController.phpファイルが追加される。これは、ログイン後に表示されるホーム画面用コントローラクラス。
- database/migrations/2014_10_12_100000_create_password_resets_table.phpファイルが追加される。
- resources/jsやresources/sassディレクトリ内のファイル内容が変更されている。
- resources/viewsディレクトリ内に、認証関連のテンプレートファイル(authディレクトリ内)、ホーム画面用のテンプレートファイル(home.blade.php)、レイアウトテンプレートファイル(layouts/app.blade.php)が追加される。
- routes/web.phpに、認証関係のルーティング登録が追記される。
ここまでの作業で、Laravelのトップ画面に変化が現れます。試しに次のURLにアクセスしてください。
http://localhost/firstlaravel/public/
図1の画面が表示されます。
スキャフォールディングコマンド実行前のトップ画面にはなかった右上の[LOGIN]リンクと[REGISTER]リンクが増えています。この[LOGIN]リンクをクリックすると、図2の画面が表示されます。
デザインこそされていませんが、これが自動生成されたログイン画面です。一通り機能が揃っています。ここにメールアドレスとパスワードを入力するとログイン処理が自動的に行われ、ホーム画面が表示されます。これらの処理コードはあらかじめ記述されており、一切コーディングの必要はありません。ただし、ログインユーザー情報をあらかじめ登録しておく必要があります。これに関しても登録機能が用意されており、それが、図2の画面の[Register]リンク、あるいは、図1のトップ画面の[REGISTER]リンクの先で表示された図3の画面です。
この画面に必要事項を入力して[Register]ボタンをクリックすると、ユーザー登録が行われます。こちらも、一切コーディングする必要はありません。