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バイトしか無いため、すぐにオーバーフローを起こします。予め変更しておきましょう。