Laravelでブログサイトを作る 06. Laravelに認証機能を導入
▲閉じる
目次

はじめに
前回の作業を完了し、http://192.168.56.10/にアクセスすると、Laravelのwelcome画面が表示されることを前提に進めます。
導入
認証には、Laravel Jetstreamを使用します。
インストールは、composerとnpmを使用して行います。
# [コメント]サーバ内の作業ディレクトリへ移動します
$ cd /home/vagrant/blog
# [コメント]インストール実行
$ composer require laravel/jetstream
$ php artisan jetstream:install livewire --teams
$ npm install
$ npm run dev
# [コメント]必要なテーブルを作成します
$ php artisan migrate
ユーザの登録
http://192.168.56.10/registerにアクセスすると、登録画面が表示されます。

名前、メールアドレス、パスワードを入力し、「REGISTER」ボタンをクリックすれば登録は完了です。
http://192.168.56.10/loginからログインできるか試してみましょう。
2要素認証
2要素認証(メールアドレスとパスワードの知識要素と、スマートフォンを使った所有要素)でのログイン制御が可能です。それも、かなり簡単に。
1. アプリインストール【スマートフォン側で作業】
公式が案内している、「Google Authenticator application」をスマートフォンにインストールします。
Android:Google認証システム
iPhone:Google Authenticator
名前は違いますが、どちらも同様のアプリ、のはずです。(私がiPhoneを所有していないので、そちらは未確認です)
インストールしただけではまだ何もできないので、そのままスマートフォンは一旦置いておきます。
2. サイトのユーザ設定を変更【PC側で作業】
ログイン後、ダッシュボードの右上から「Profile」を選択します。

「Two Factor Authentication」のところで、ENABLEをクリックします。


3. アプリを起動し、QRコード読み込み【スマートフォン側で作業】
アプリを起動し、「QRコードをスキャン」を選択します。
後は、上記2の後に表示されたQRコードを、カメラで読み取ります。
「アカウント追加」ボタンを押しておけば、アプリにこのサイトが記憶されます。
これで、準備は完了です。
4. ログインしてみる【PC側で作業】
試しに、一度ログアウトして、もう一度ログインします。
メールアドレスとパスワードを入力してログインボタンを押すと

コードの入力画面が表示されます。

ここに、アプリで表示される6桁の数字を入力することで、初めてログインが完了するようになりました。
ユーザの登録をできないようにする
今回制作するのは、自分だけが管理画面にアクセスできれば良いので、登録画面へのアクセスをできなくしてしまいます。config/fortify.phpの最後の方にある、Features::registration(),の行をコメントアウトしてしまいます。
すると、登録画面にアクセスしても、404 NOT FOUNDになります。
他のメニューも、必要に応じてコメントアウトしても構わないでしょう。
'features' => [
//Features::registration(), // 登録。今回コメントアウトするもの。
Features::resetPasswords(), // パスワードリセット。
// Features::emailVerification(), // メール認証。デフォルトでコメントアウト済み。
Features::updateProfileInformation(), // プロフィール更新。
Features::updatePasswords(), // パスワードの更新。
Features::twoFactorAuthentication([ // 2段階認証
'confirmPassword' => true,
]),
],
2022-04-10 09:00:00
