はじめに
ログインをして使う会員制Webサービスのようなものをつくりたい場合、ユーザー認証機能を実装する必要があります。
PHPフレームワークであるLaravelを使うと認証機能を比較的簡単に実装できます。
ここでは、Laravelプロジェクトに認証機能の追加をしてみたいと思います。
Laravelの環境構築とプロジェクトの作成については、こちらにまとめています。
ここでは、プロジェクト作成後から話を進めていきます。
Authクラス
LaravelにはAuthというクラスが用意されています。このAuthクラスには、ユーザー登録やログイン、ログアウト機能、ユーザー情報の管理、アクセス制限、ログイン状態を調べる機能など、認証に関する機能を持っています。
Laravel 6より前のバージョンでは、Auth認証機能は標準パッケージに含まれていましたが、Laravel 6以降は、必要時に組み込む必要があります。
ここでは、Laravel 6以降のバージョンに関しての実装方法を記述していきます。
Laravel 6以降では、Authクラスは、laravel/uiというパッケージに実装されています。
laravel/uiを追加するには、composerを使用します。
また、認証関連のフロントエンド部分を生成するためにnpmというパッケージ管理ツールを使用します。npmを利用するためには、Node.jsがインストールされている必要があります。
Node.jsは、こちらからダウンロードしてインストールすることができます。
Auth認証の追加
コマンドプロンプトでLaravelプロジェクトを作成したら、カレントディレクトリをそのプロジェクトのディレクトリに移動します。
その状態で、composerを使って次のようなコマンドを実行します。
C:\xampp\htdocs\minrebo>composer require laravel/ui
ここでは、ローカル環境での実装としているのでxamppを使っています。
Laravelのプロジェクト名をminreboとしてプロジェクトを作成しています。
Publishing complete.と表示されれば、完了です。
これでlaravel/uiパッケージがアプリケーションに組み込まれました。
次に、laravel/uiを使ってサーバー側にAuth関連ファイルを生成します。
artisan uiコマンドを実行します。
C:\xampp\htdocs\minrebo>php artisan ui vue –auth
続いて、フロントエンド側にAuth関連モジュールを組み込みます。
次のコマンドを実行します。
C:\xampp\htdocs\minrebo>npm install && npm run dev
サーバー側とフロントエンド側のそれぞれでAuth関連のファイルを生成することでAuth認証機能を使うことができるようになります。
Auth認証の確認
ここでは、XAMPPにデプロイしている状態で実行してみます。
XAMPPにデプロイする方法は、こちらに書いています。
Webブラウザから「http://localhost/[プロジェクト名]/public」と入力して、実行します。
この例では、プロジェクト名は、「minrebo」となっています。
実行結果は、次のようになります。
ブラウザ表示部の右上に「Log in」と「Register」が表示されています。
「Log in」、「register」の部分をクリックしてみます。
それぞれ、loginページ、registerページに飛びログイン入力、新規ユーザー登録画面が表示されます。
この状態で新規ユーザー登録をするため、register画面で名前とe-mail、パスワードを入力してRegisterボタンをクリックします。
そうすると次のようなエラー画面が表示されます。
Auth認証機能は追加されましたが、ユーザーを登録するデータベースの部分が作成されていません。
そういった部分からこのエラーが出ています。
ユーザー登録とログインができるようにするためデーターベースをつくっていきます。
データベースの作成
XAMMPのコントロールパネルにあるShellを起動して、コンソールからmysqlに入ります。
ログイン後、createコマンドでデーターベースを作成します。ここでは、minreboという名前のデータベースを作成しています。
データベース操作関係の詳細は、こちらにまとめています。
作成したデータベースにテーブルを追加していきます。
テーブルは、Authの中にusersというものが準備されています。
これは、database/migrationsというフォルダの中に入っています。
このファイルを含むテーブルをマイグレーションしていきます。
マイグレーションは、次のようなコマンドで実行します。
C:\xampp\htdocs\minrebo>php artisan migrate
これで、minreboという名前のデータベースにAuth認証機能に必要なテーブルが準備されました。
これをもとに、2か所ほど、プログラムを修正します。
設定ファイルの修正
修正が必要な設定ファイルは「.env」と「config/database.php」というファイルになります。
どちらも、databaseの設定を修正します。
まずは、「.env」ファイルからです。ファイルは、作成したプロジェクトのルート直下にあります。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=minrebo
DB_USERNAME=root
DB_PASSWORD=********
ファイルを開くと「DB_*******」のようなデータベースの設定箇所があります。
この中の DB_DATABASE 、 DB_USERNAME 、 DB_PASSWORD を修正します。
DB_DATABASE は、先ほど作成したデータベースの名称を入力します。 DB_USERNAME は、データベースにアクセスするユーザーの名前です。ユーザー名をrootと入力します。最後に、 DB_PASSWORD は、パスワードです。上記は、「********」としていますが、ここは、データベースにアクセスするときのパスワードの文字列を入力します。
次に、もう一つのファイル「config/database.php」というファイルを修正します。このファイルは、configディレクトリの下にあります。
このファイルの中に「 Database Connections」の設定箇所があります。
そこにあるmysqlの設定を修正していきます。該当箇所を抜粋すると次のような部分です。
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'minrebo'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', '********'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
この部分の次の箇所を変えています。
'database' => env('DB_DATABASE', 'minrebo'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', '********'),
「.env」ファイルで修正した DB_DATABASE 、 DB_USERNAME 、 DB_PASSWORD を同じように修正します。パスワード「********」は、設定した文字列になります。
この2つのファイルの修正を保存して実際にユーザー登録、ログインができるようになったか確認していきたいと思います。
アプリケーションの実行
register画面でユーザー登録をするとログインができるようになっています。
そこから一度ログアウトして、再度、登録したe-mailアドレスとパスワードでログインするとhomeページに遷移してdashboard画面が表示されます。
これで、login、register、logoutの機能の実装の確認ができました。
まとめ
Laravelのプロジェクトを作成し、Auth認証機能の実装の仕方を見てきました。
データベースの作成については別記事にまとめているので詳しくはそちらの記事を参照ください。
データベースを作成して、テーブルをマイグレーションすることで、Auth認証に必要なusersテーブルが作成され、これを使ってユーザー登録、ログイン、ログアウトができるようになりました。
実装にあたり、「.env」と「database.php」という2つのファイルのデータベース設定を修正する必要があるので、その点は注意が必要です。
今後は、ユーザー登録情報の追加などAuth機能をカスタマイズしていきたいと思います。
そのあたりは、また別記事にまとめていきたいと思います。
PHPフレームワークLaravel入門第2版 [ 掌田津耶乃 ] 価格:3,300円 |
コメント