Laravel にユーザー認証機能を追加する
Laravelではユーザー認証機能(ログイン機能)が簡単に実装できます。本記事はユーザー認証機能の追加手順です。
プロジェクトで認証機能を有効にする
ビューテンプレートを作成する
プロジェクト配下でコマンドプロンプトから以下を実行します。
php artisan make:auth
\{Laravelプロジェクト}\resources\views\auth
ディレクトリとファイルが生成されます\{Laravelプロジェクト}\resources\views\layouts\app.blade.php
が生成されますweb.php
に以下のようなルート定義が追加されます。
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
認証用のデータベースをマイグレートする
プロジェクト配下でコマンドプロンプトから以下を実行します。
php artisan migrate
以下のテーブルが追加されます。
- migrations
- password_resets
- users
ユーザー登録をする
- ログイン画面でRegisterをクリック
ログイン画面はhttp://ホスト名/{Laravelプロジェクト}/public/home
でアクセスすれば表示されます。 - 各項目を入力してRegisterボタンをクリック
認証させる方法
ルーティングで認証させる
ルーターメソッドの後に->middleware('auth');
を付けます。
Route::get("/add", "SampleController@add")->middleware('auth');
コントローラ単位で認証させる
コントローラクラスのコンストラクタに以下を記述します。
public function __construct() {
$this->middleware('auth');
}
リダイレクト先
ログイン後や新規登録後のリダイレクト先を変更する方法です。
ログイン後のリダイレクト先
\{Laravelプロジェクト}\app\Http\Controllers\Auth\LoginController.php
の以下を変更します。
protected $redirectTo = '/home';
新規登録後のリダイレクト先
\{Laravelプロジェクト}\app\Http\Controllers\Auth\RegisterController.php
の以下を変更します。
protected $redirectTo = '/home';
ログアウト処理
コントローラークラスなどのログアウトしたい箇所で、Auth::logout()
をコールします。
use Illuminate\Support\Facades\Auth;
class SampleController extends Controller
{
public function logout() {
Auth::logout();
return redirect('login');
}
}