ホーム > カテゴリ > PHP・Laravel・CakePHP >

Laravel標準のログイン認証をつくる

Laravelではコマンドを実行するだけでログイン機能を簡単に作成できます。標準でメールでのパスワード再発行(リセット)にも対応しています。

初期状態ではユーザー登録をする際にメールアドレス経由で登録することはできません。登録ボタンを押すとそのまま登録できちゃいます。

つくるもの

ログイン画面

ダッシュボード(ホーム)

登録画面

パスワードリセット ※パスワード再発行

1. 前提条件

Node.jsがインストールされている必要があります。

CentOS

// Node.js
curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install nodejs
 
node -v

Ubuntu

// Node.js
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs

node -v

2. 各種設定

現時点ではLaravel8が最新版ですが、セキュリティフィックスは2021年9月までなので、2022年9月まで対応するLaravel6(LTS)を用います。

※LTS = Long Term Support = 長期サポート

// testプロジェクトの生成
composer create-project --prefer-dist laravel/laravel test "6.*"

// laravel/uiのインストール 
cd test
composer require laravel/ui "^1.0" --dev
※Laravel7/8では異なるので注意。

// Auth関連ファイルを作成する ※この中から1つ選ぶ
php artisan ui bootstrap --auth
php artisan ui vue --auth
php artisan ui react--auth

// インストールとビルド
npm install && npm run dev

// データベースの設定(.envファイル)
DB_DATABASE=ココに設定
DB_USERNAME=ココに設定
DB_PASSWORD=ココに設定

// マイグレーション
php artisan migrate

// 実行
php artisan serve

3. URL

ログイン画面
http://localhost:8000/login

登録画面
http://localhost:8000/register

パスワード確認
http://localhost:8000/password/confirm

パスワードリセット ※パスワード再発行
http://localhost:8000/password/reset

4. メール設定(.env)

この設定はバリュードメインのコアサーバーの設定です。環境が異なる場合は適宜変更して下さい。※587ポートはサブミッションポートです。

MAIL_DRIVER=smtp
MAIL_HOST=SMTPサーバー名
MAIL_PORT=587
MAIL_USERNAME=ログインユーザー名
MAIL_PASSWORD=ログインパスワード
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=送信メールアドレス
MAIL_FROM_NAME="送信者名"

5. ルーティング

php artisan route:list
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method   | URI                    | Name             | Action                                                                 | Middleware   |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
|        | GET|HEAD | /                      |                  | Closure                                                                | web          |
|        | GET|HEAD | api/user               |                  | Closure                                                                | api,auth:api |
|        | GET|HEAD | home                   | home             | App\Http\Controllers\HomeController@index                              | web,auth     |
|        | GET|HEAD | login                  | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest    |
|        | POST     | login                  |                  | App\Http\Controllers\Auth\LoginController@login                        | web,guest    |
|        | POST     | logout                 | logout           | App\Http\Controllers\Auth\LoginController@logout                       | web          |
|        | GET|HEAD | password/confirm       | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm    | web,auth     |
|        | POST     | password/confirm       |                  | App\Http\Controllers\Auth\ConfirmPasswordController@confirm            | web,auth     |
|        | POST     | password/email         | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web          |
|        | GET|HEAD | password/reset         | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web          |
|        | POST     | password/reset         | password.update  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web          |
|        | GET|HEAD | password/reset/{token} | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web          |
|        | GET|HEAD | register              | register        | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest    |
|        | POST     | register              |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest    |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+

6. セッションの時間

セッションのデフォルト120分をブラウザが閉じまるで有効にする

参考文献

Laravel 6.x 認証 (公式)
ログイン認証機能の日本語化(laravel6)





関連記事



公開日:2020年11月19日
記事NO:02860