
こんにちは、京町啓一です。
今回は Laravel5.7 を使ってログイン機能とユーザー登録機能を実装していきましょう。
実際に実装される方は、お時間に余裕を持ってくださいね。
開発している環境
OS:CentOS 7
WebServer:Apache 2.4
DBMS:MySQL
Laravel 5.7(PHP7.2 / 7.1)
※ ルートディレクトリは etude
としていますが、適宜みなさんの状況に合わせて読み替えて下さい。
※ ルートディレクトリ:スタートなるフォルダ、プロジェクトフォルダと言われるものですね。
ログインとユーザー登録機能
データベースの作成
.env ファイルの変更
マイグレーションの実行
ルートディレクトリへ移動します。
マイグレーションを実行します。
これで、etude(データベース)の中に users、password_reset、migrations という3つのテーブル(表)ができることになります。
もう一度、MySQL にログインして、テーブルが無事に作成されているか見てみるのもよいでしょう。
データベース一覧を表示する: show databases;
データベース名があればOKです
データベースを選択する: use テーブル名;
どのデータベースを操作するかを明確にします。
テーブル一覧を確認する: show tables;
テーブルの一覧確認ができます。
テーブルの造り(構造)を確認する: show columns from テーブル名;
email など、どのようなデータを格納するテーブルなのかがわかります。
デーブルのデータを確認する: describe テーブル名;
テーブルに格納されているデータの詳細がわかります。
※ セミコロン( ; )をコマンドの最後に付け忘れやすいのでご注意を
ログインとユーザー登録機能の実装
ルートディレクトリへ移動します。
ログイン機能の実装コマンド
生成されるもの
HomeController.php

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HomeController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { return view('home'); } }
routes / web.php 内へ自動追加されたコード
Auth::routes(); Route::get('/home', 'HomeController@index')->name('home');
パスワードリセット
パスワードを変更したり、忘れたときのための機能ですね。
パスワードリセットはメール機能を利用する必要がありますので、色々と方法があります。
ここで紹介するのは、mailtrap というサービスを利用して、パスワードリセットの機能確認を行うだけのものになります。
本番環境やメール本文のカスタマイズなどをご検討の方は読み飛ばしてくださいませ。
mailtrap の利用準備とLaravel設定情報の確認
mailtrap へアクセスします

右上からログインまたは新規登録をしましょう。
新規登録の場合はこちらに進みます。

ログインが完了するとこのような画面に進みます。

Inbox という箇所をクリックしましょう。

ドロップダウンの箇所で Laravel を選択しましょう。
その後、username、password をメモしていただくか、画面をそのままにしておきましょう。
Laravel 側の操作に戻ります。
.env ファイル
username、password をmailtrap のものと同じものを入力して保存しましょう。
MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=(あなたのusername) MAIL_PASSWORD=(あなたのpassword) MAIL_ENCRYPTION=null
Laravel での操作
では、ユーザー登録からパスワードリセットまでの操作をしながら、動作確認を行いましょう。
Laravel 画面から右上の register へ

ユーザー登録をします。Confirm Password はパスワードの確認欄です。

画面右上の login から ログインしてみましょう

このような画面が出ればログイン完了です。

一度ログアウトして、再度ログイン画面に移りましょう
今度は Forgot Your Password のリンクへ進みます。

パスワードリセット用のメール送信を依頼する画面に移ります。
メールアドレスを入力すると、そのアドレス宛にメールが届きますが、今回は mailtrap を利用していますので、実際にみなさんが入力したアドレスにはメールは届きません。
mailtrap で送信ができるかどうかのテストをしています。

mailtrap でメールの送受信確認
mailtrap へ戻っていただき、Inbox 内でこのような画面が確認できれば成功です。

メール内の Reset Password をクリックすると、Laravel のパスワードリセットの画面に移ります。
AWS Cloud9 をお使いの場合
画面が移動しなければ、アドレスバーの localhost の部分を AWS Cloud9 の http://~ amazonaws.com/ の部分に置き換えてみてください。
Expected response code 250 but got code “530”, with message “530 5.7.1 Authentication required
php artisan clear cache
症状が改善することがあります。
Laravel でパスワードリセット
メールアドレスを入力して、新しい希望パスワードを入力しましょう。

このような画面がでれば成功です。

まとめ
今回は、Laravel を利用するメリットの一つ、ログイン機能、ユーザー登録、パスワードリセット機能の実装を行いました。
Laravel の認証機能はある程度のセキュリティ対策(インジェクション攻撃などに対する対策)が実装されています。
認証機能の実装方法は、今回紹介したものだけではなく、いろいろな方が様々な情報を提供して下さっています。
セキュリティに関しても同じように多くの情報がありますので、今回の実装をきっかけにして調査してみると良いでしょう。