Laravel:ログイン・ログオフ1(準備)
タグ: Laravel3
Laravelのフォーム処理の簡単な例を紹介します。
ログインフォームを作成してみましょう。
基本
今回はLaravelのデフォルト認証システムを使用します。他のフレームワーク同様、様々な認証がLaravelの拡張システムであるバンドルを使用して提供されています。
Laravelの認証システムでは、usersテーブルをユーザー管理に使用します。取り扱いをアクティブレコードを提供するクラスのFluentか、ORMであるEloquentのどちらで取り扱うかを指定できます。Eloquentを使用する場合、クラスを定義する必要がありますが、とても簡単です。
データベースとテーブル
まず、テーブルをデータベースに作成しますが、使用するデータベースを設定ファイルで指定してください。application/config/database.phpもしくはapplication/config/local/database.phpになるでしょう。設定している動作環境モードにより、使用するファイルは異なります。
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が認証に使用されるユーザー情報です。値はテーブルのフィールド名です。通常はusernameかemailが使用されるでしょう。同様にキーのpasswordはパスワードフィールドです。
modelはEloquent ORMを使用する場合にユーザーを取り扱うモデルの名前です。tableはテーブル名です。
driverにはeloquentとfluentが指定できます。ORMを使用するかアクティブレコードを使用するかです。これは、ログイン中のユーザー情報を取得するAuth::user()が返す結果にも影響します。
最後に、application/config/session.phpを開き、ドライバーがcookieの場合、他のものに変更してください。一番お手軽なのは、fileです。クッキーは4Kバイトしか無いため、すぐにオーバーフローを起こします。予め変更しておきましょう。