Laravel:ログイン・ログオフ1(準備)

タグ: Laravel3  

Laravelのフォーム処理の簡単な例を紹介します。

ログインフォームを作成してみましょう。

基本

今回はLaravelのデフォルト認証システムを使用します。他のフレームワーク同様、様々な認証がLaravelの拡張システムであるバンドルを使用して提供されています。

Laravelの認証システムでは、usersテーブルをユーザー管理に使用します。取り扱いをアクティブレコードを提供するクラスのFluentか、ORMであるEloquentのどちらで取り扱うかを指定できます。Eloquentを使用する場合、クラスを定義する必要がありますが、とても簡単です。

データベースとテーブル

まず、テーブルをデータベースに作成しますが、使用するデータベースを設定ファイルで指定してください。application/config/database.phpもしくはapplication/config/local/database.phpになるでしょう。設定している動作環境モードにより、使用するファイルは異なります。

参照:Laravel3の動作環境

application/migratations/2012_06_30_104857_create_users.phpを作成してください。日付は作成日に変更しても、しなくても構いません。内容は以下の通りです。

<?php

class Create_Users {

    /**
     * Make changes to the database.
     *
     * @return void
     */
    public function up() {

        // usersテーブルの作成

        Schema::create('users',
            function($table)
            {
                // 自動増分設定のid
                $table->increments('id');

                // varchar
                $table->string('username', 32);
                $table->string('email', 320);
                $table->string('password', 64);

                // created_atとupdated_atをDATETIME型で作成
        // この2つのフィールドはLaravelが自動的に
        // 設定してくれる
                $table->timestamps();
            });
    }

    /**
     * Revert the changes to the database.
     *
     * @return void
     */
    public function down() {

        // usersテーブルの削除
        Schema::drop('users');
    }

}

続いて、作成したマイグレーションを実行します。端末で以下のコマンドを実行します。

php artisan migrate:install

このコマンドは、初めてマイグレーションを行う前に、一回だけ行います。これにより、データベースにマイグレーションを管理するためのテーブルが作成されます。

では、実際のマイグレーションを行いましょう。

php artisan migrate

これで、データベースにusersテーブルが作成されます。

認証の設定

標準の認証システムでは、ユーザー管理テーブルのどの項目を認証に使用するかを設定ファイルに記述します。この認証設定ファイルを設定しましょう。application/config/auth.phpを開いてくださ。(database.phpと同様に、環境により適用されるファイルの位置は異なります。)

以下のように設定してください。

<?php

return array(
    'driver' => 'eloquent',
    'username' => 'username',
    'password' => 'password',
    'model' => 'User',
    'table' => 'users',
);

キーのusernameが認証に使用されるユーザー情報です。値はテーブルのフィールド名です。通常はusernameemailが使用されるでしょう。同様にキーのpasswordはパスワードフィールドです。

modelはEloquent ORMを使用する場合にユーザーを取り扱うモデルの名前です。tableはテーブル名です。

driverにはeloquentfluentが指定できます。ORMを使用するかアクティブレコードを使用するかです。これは、ログイン中のユーザー情報を取得するAuth::user()が返す結果にも影響します。

最後に、application/config/session.phpを開き、ドライバーがcookieの場合、他のものに変更してください。一番お手軽なのは、fileです。クッキーは4Kバイトしか無いため、すぐにオーバーフローを起こします。予め変更しておきましょう。