初めてのLaravel 5.6 : (28) 認証(その1)

Laravel 5.6 ではプロジェクトを作成した時点で、ユーザ登録、ログイン認証、パスワード再設定の機能がすぐ使えるように、コントローラが用意されています。また、これらの機能を使うためのルーティング設定やビューの作成も artisan コマンドで生成してくれます。今回は、ユーザ登録とログイン認証の実装を行います。


マイグレーション

Laravel プロジェクトを作成した時に、デフォルトでユーザーとパスワード再設定用の 2つのマイグレーションファイルが作成されています。マイグレーションを1度でも実行済であれば、必要なデータベースの項目は既に出来ています。

忘れてしまった人は、以前にやった、マイグレーションで db のバージョン管理を振り返ってみてください。

デフォルトのマイグレーションファイル

database/
└── migrations
    ├── 2014_10_12_000000_create_users_table.php
    └── 2014_10_12_100000_create_password_resets_table.php

Controller

認証関連のコントローラーもデフォルトで存在しています。

デフォルトのコントローラー

app/Http/Controllers
└── Auth
    ├── ForgotPasswordController.php
    ├── LoginController.php
    ├── RegisterController.php
    └── ResetPasswordController.php

View と Route の生成

artisan コマンドで view と route を生成します。

php artisan make:auth

View

以下のように認証用の view が作成されました。

resources/views
├── layouts
│   └── app.blade.php
├── auth
│   ├── login.blade.php
│   ├── passwords
│   │   ├── email.blade.php
│   │   └── reset.blade.php
│   └── register.blade.php
└── home.blade.php

認証関連の画面で使う layouts/app.blade.php と
ログイン後に表示する home.blade.php も一緒に作成されています。

Controller

HomeController.php も作成されました。

app/Http/Controllers/
└── HomeController.php

Route

認証用のルートも追加されています。

// routes/web/php

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

artisan コマンドでルートを確認してみます。

php artisan route:list

+--------+-----------+-------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method    | URI                     | Name             | Action                                                                 | Middleware   |
+--------+-----------+-------------------------+------------------+------------------------------------------------------------------------+--------------+
|        | GET|HEAD  | home                    | home             | App\Http\Controllers\HomeController@index                              | web,auth     |
|        | POST      | login                   |                  | App\Http\Controllers\Auth\LoginController@login                        | web,guest    |
|        | GET|HEAD  | login                   | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest    |
|        | POST      | logout                  | logout           | App\Http\Controllers\Auth\LoginController@logout                       | web          |
|        | POST      | password/email          | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest    |
|        | POST      | password/reset          |                  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest    |
|        | GET|HEAD  | password/reset          | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest    |
|        | GET|HEAD  | password/reset/{token}  | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest    |
|        | POST      | register                |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest    |
|        | GET|HEAD  | register                | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest    |
+--------+-----------+-------------------------+------------------+------------------------------------------------------------------------+--------------+

動作確認

ユーザー登録

実際にユーザー登録をしてみます。

  • http://localhost:8000/register にアクセスしユーザー登録画面を表示します。
  • ユーザー情報を入力し、登録します。
  • http://localhost:8000/home が表示されれば完了です。
    Dashboard に You are logged in! と表示されているはずです。

次に、artisan コマンドで、DB にユーザーが保存されたかを見てみます。

$ php artisan tinker

>>> \App\User::all()->toArray();
=> [
       [
           "id"         => "2",
           "name"       => "who",
           "email"      => "who@sample.com",
           "created_at" => "2015-03-21 12:02:30",
           "updated_at" => "2015-03-21 12:02:30"
       ]
   ]
>>> 

ユーザーデータが1件登録されていました。成功です。


ログアウト

次にログアウトをしてみます。

  • http://localhost:8000/home にアクセスします。
  • 右上のユーザー名をクリックし、プルダウンメニューから Logout を選択します。
  • 記事一覧が表示されれば完了です。

ログイン

先ほど登録したユーザーでログインしてみます。


パスワードの再設定

まずは .env 内の APP_URL を修正します。

# APP_URL=http://localhost
APP_URL=http://localhost:8000

APP_URL の値は、パスワード再設定メールの中で使用されています。

次にメールの環境設定を行います。
詳しい方法はこちら

メールの環境設定後に WWW サーバーを再起動してください。

php serve

その後は以下の手順です。

  • ログインしている場合はログアウトします。
  • http://localhost:8000/login にアクセスし、Login ボタンの右にある Forgegt Your Password? をクリックします。
  • http://localhost:8000/password/reset が表示されるので、メールアドレスを入力して、送信ボタンを押します。
  • HTML メールが届くので、Reset Password ボタンをクリック
  • 表示された画面でパスワードを再設定します。
  • http://localhost:8000/home が表示されれば完了です。

ログアウトして新しいパスワードでログインしてみてください。

長くなってきたので一旦ここで終了します。
次回は今回生成した内容に若干の微調整を行います。


まとめ

ユーザー登録とログイン、ログアウト、パスワードの再設定が出来るようになりました。認証機能がはじめから入っているのは助かりますね。

http://laravel.com/docs/5.6/authentication

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中