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)