2018/10/12
laravel5.2からマルチ認証がデフォルトで備わっています。
マルチ認証とは、2つ以上の認証(ユーザー認証・管理者認証)を1つのサイトで実現する方法です。
今回は通常のユーザー認証のみセットアップします。
目標
Laravel5.2にデフォルトでついている認証画面の作成。
前提条件
パスワードリセット機能はメール送信機能を使います。
Laravelの設定(.envファイル)でメール送信ができるようにしておきます。
進め方
【1】認証機能の自動生成
【2】DBのテーブル作成
【1】認証機能の自動生成
認証機能の自動生成はartisanコマンドで用意されています。
1 | php artisan make :auth |
上記のartisanコマンドを実行すると以下の機能ができます。
- 新規登録
- ログイン
- ログアウト
- バリデート
- パスワードリセット
- Remember Me(ログイン状態維持)
- ログインロック(n回ログインに失敗したらn秒間ログインできない)
退会処理はないので自作します。
ルーティングも自動的にroutes.phpに書き込んでくれます。
1 2 | Route::auth(); Route::get( '/home' , 'HomeController@index' ); |
authメソッドは、Illuminate\Routing\Router.phpに記述されています。
authメソッドが何をしているか確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public function auth() { // Authentication Routes... $this ->get( 'login' , 'Auth\AuthController@showLoginForm' ); $this ->post( 'login' , 'Auth\AuthController@login' ); $this ->get( 'logout' , 'Auth\AuthController@logout' ); // Registration Routes... $this ->get( 'register' , 'Auth\AuthController@showRegistrationForm' ); $this ->post( 'register' , 'Auth\AuthController@register' ); // Password Reset Routes... $this ->get( 'password/reset/{token?}' , 'Auth\PasswordController@showResetForm' ); $this ->post( 'password/email' , 'Auth\PasswordController@sendResetLinkEmail' ); $this ->post( 'password/reset' , 'Auth\PasswordController@reset' ); } |
【2】DBのテーブル作成
Laravel5.2ではデフォルトでusersテーブルとpassword_resetsテーブルを作成するマイグレーションファイルがあります。
これをそのまま認証用として利用します。
artisanコマンドでマイグレーションを実行します。
1 | php artisan migrate |
PhpMyAdminで作成されたテーブルを確認します。
users テーブル
password_resets テーブル
これで認証画面の完成です。
{ドメイン}/login にアクセスします。
ユーザー側の認証画面は以上になります。

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。