SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

次のページ
ログインチェックの利用

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
人気のPHPフレームワークLaravelを習得しよう連載記事一覧

もっと読む

この記事の著者

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook<個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12920 2020/10/05 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング