CodeZine(コードジン)

特集ページ一覧

Laravelの認証機能を理解しよう

人気のPHPフレームワークLaravelを習得しよう 第10回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/10/05 11:00

目次

Laravel認証機能のプロジェクトへの追加(2)

手順3:データベースへのテーブルの追加

 Laravelではこのように、自動生成された認証機能によって、ほぼコーディングなしでログイン処理やユーザー登録処理を利用できます。ただし、これらの処理では、データベース内のusersテーブルのデータを利用します。そのため、最後の手順としてデータベースにこのusersテーブルを作成しておく必要がありますが、これもほぼ自動でできます。

 Laravelには、データベースマイグレーションという機能があります。これは、データベース内のテーブルの生成、削除、初期データの挿入といった、アプリケーションの動作に必要なデータベース環境構築を自動化できる機能です。マイグレーションを利用するためには、マイグレーション用のファイルを用意し、Laravelのコーディングルールに従ってテーブル生成などのPHPコードを記述して、マイグレーション用のコマンドを実行するだけです。

 具体的に見ていきましょう。認証機能本体はLaravelによって用意されたものですので、そこで利用されるテーブルのマイグレーションファイルも同様に、あらかじめ用意されています。database/migrationsディレクトリを見てください。中に、

  • 2014_10_12_000000_create_users_table.php
  • 2014_10_12_100000_create_password_resets_table.php
  • 2019_08_19_000000_create_failed_jobs_table.php

 の3つのファイルが入っているはずです。マイグレーションファイルは、このように、

ファイルが生成されたタイムスタンプ_create_テーブル名_table.php

 のファイル名になっています。このことから、上記3つのファイルは、順にusersテーブル、password_resetsテーブル、failed_jobsテーブル用のマイグレーションファイルであることがわかります。このうち認証機能で利用されるのはusersテーブルと、認証機能中のパスワード再発行で利用されるpassword_resetsテーブルの2つです。ここでは、サンプルとしてusersテーブル用のマイグレーションファイルである2014_10_12_000000_create_users_table.phpを見ておきましょう。中のコードをリスト1に抜粋します。

[リスト1]database/migrations/2014_10_12_000000_create_users_table.php
<?php
〜省略〜
class CreateUsersTable extends Migration
{
	public function up()  // (1)
	{
		Schema::create('users', function (Blueprint $table) {
			〜省略〜
		});
	}
	public function down()  // (2)
	{
		Schema::dropIfExists('users');
	}
}

 本稿は、データベースのマイグレーションを解説するものではありませんので、ここでは簡単に紹介するに留めておきます。マイグレーションファイルには、テーブルを作成するためのup()メソッド(リスト1の(1))と、テーブルを削除するためのdown()メソッド(リスト1の(2))を記述します。up()メソッド内はSchemaクラスのメソッドcreate()を利用してテーブルの作成コードなどを記述します。down()メソッド内は、同じくSchemaクラスのdropIfExists()メソッドを利用してテーブルの削除コードを記述します。これらの詳細な記述方法は公式ドキュメントなどを参照してください。ここでは、リスト1の(1)のcreate()メソッドの第1引数から、usersテーブルが生成されることを確認しておいて、次に進みます。

このようにして用意されたマイグレーションファイルを実行します。ただし、そのためには、あらかじめデータベースへの接続が可能でないとダメです。こちらは、前回のデータベースの接続設定を参考にしてください。今回も、前回同様、fldbデータベースとflusrユーザを利用することにします。その状態で、firstlaravelディレクトリで次のコマンドを実行してください。

php artisan migrate

 特にエラー表示などなければ、無事各テーブルが作成されています。 これで、認証機能を利用できる環境が整いました。

ユーザー登録からログイン後の遷移

 実際に動作確認を行っていきましょう。まず、ユーザー登録です。図3のユーザー登録画面に適当な情報を入力して[Register]ボタンをクリックしてください。すると、図4の画面に移動します。

図4: ユーザ登録後に表示された画面
図4: ユーザー登録後に表示された画面

 これが、新たに追加されたホーム画面です。ここで、左上の[Laravel]リンクをクリックすると、図5のトップ画面が表示されます。

図5: ログイン後のトップ画面
図5: ログイン後のトップ画面

 図1と違い、右上のリンクが[HOME]に変化しており、ログイン後であることがわかります。この[HOME]リンクをクリックすると、図4のホーム画面が表示されます。

 さらに、ホーム画面から[Logout]リンクをクリックすると、ログアウト処理が行われ、図1と同じトップ画面が表示されます。

 今度は、[LOGIN]リンクをクリックし、図2のログイン画面を表示させ、先ほど登録したメールアドレスとパスワードを入力して、ログインを行ってください。再度、図4のホーム画面が表示されます。

 このように、Laravelの認証機能のスキャフォールディングを利用することで、コーディングすることなしに、ユーザー登録からログイン、ログアウトなどの機能を実現できます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:人気のPHPフレームワークLaravelを習得しよう

もっと読む

著者プロフィール

  • WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きた...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5