SimpleAuth - はじめに

その名前が示すように Simpleauth は、Auth パッケージに含まれているシンプルな認証システムです。 認証の動作する実装であることに加え、それはまた他の認証ドライバの例でもあります。 独自のドライバを構築するときに参照として使用することができます。

Auth のセットアップ

設定は、Simpleauth ドライバを使用しようとしていることを Auth パッケージを伝えることから始まります。 これは auth.php 設定ファイルを介して行われます。 Auth パッケージにはデフォルトのファイルが提供されています。 任意の変更を加える前に、このファイルを app/config フォルダにコピーする必要があります。 既にデフォルトのファイルが Simpleauth パッケージ用に設定されています。 この設定ファイルについての説明をここで見るけることができます。

上記の後に、パッケージをオートロードするかどうかを app/config/config.php の always_load セクションで指定します。

ACL's

SimpleAuth には、以下の ACL の仕組みをサポートしている ACL ドライバが付属しています:

アクセスを検査する場合、単一の権利の検査したい場合は role.right、また、 一度に複数の権利を検査したい場合は role.[right,right] と指定します。 これは AND 検査なので、複数の権利を指定した場合、ユーザはそれらのすべての権利を持つ必要があります。

設定

Simpleauth 認証システムは、設定ファイル 'simpleauth.php' を使用して構成されています。 Auth パッケージの中にデフォルトのファイルがあります。 任意の変更を加える前に、app/config フォルダにこのファイルをコピーします。

下記の設定値が定義されています:

パラメータ デフォルト 説明
db_connection string
null
利用するデータベース接続の名前。 db.php の config ファイルでの名称と一致させる必要があります。 null でデフォルトの DB インスタンスを使います。
table_name string
'users'
利用するユーザ情報を定義したテーブル名。
table_columns array
array('*')
ユーザ情報のテーブルのうち、 select するカラムのリスト。 '*' で全カラムを select 。少なくとも、 'username', 'password', 'email', 'last_login', 'login_hash', 'group', 'profile_fields' を含んでいる必要があります。
guest_login boolean
true
true の場合には誰もログインしていない場合にダミーの 'guest' ユーザーが作成されます。 誰もログインしていない場合でさえグループと ACL のドライバを使用することが可能となります。
remember_me array
array(
	'enabled' => false,
	'cookie_name' => 'rmcookie',
	'expiration' => 86400*31
)
Simpleauth の 'remember_me' 機能のための設定
multiple_logins boolean
false
true の場合、同一ユーザの複数の同時ログインが許可されています。 false の場合、ユーザーがログインしたときに以前のログインが取り消されます。 これを有効にすると、いくつかのログインセッションハイジャック対策が無効になることに注意してください!
groups array
array()
SimpleAuth Group ドライバが使用するグループ定義。 グループ配列構造の説明については、デフォルト設定のファイルを参照してください。
roles array
array()
SimpleAuth ACL ドライバが使用するロール定義。 ロール配列構造の説明については、デフォルト設定のファイルを参照してください。
login_hash_salt string
'put_some_salt_in_here'
SimpleAuth で利用されるパスワードをよりセキュアにするために、パスワードのハッシュ値をデータベースに保存する際に、サルトが使われています。 デフォルトのものから、ランダムな文字列に変更することを忘れないように! パスワードのハッシュ化にあたり、 SimpleAuth は非常にセキュアな機構である PBKDF2 を利用しています。
username_post_key string
'username'
ログインフォームのユーザ名を入力するフィールド名。
password_post_key string
'password'
ログインフォームのパスワードを入力するフィールド名。

'remember-me' 機能を使用したい場合は、記憶されるユーザ情報を格納するために暗号化されたクッキーを使用するため、有効な Crypt 設定を持っていることを確認してください。

データベーステーブル

SimpleAuth は単一のテーブルに依存しています。 Auth パッケージにはこのテーブルを作成するために必要なマイグレーションファイルが含まれています。
oil refine migrate --packages=auth を実行すればあなたのために作成されたテーブルを持つことができます。

これはログイン処理のサンプルです:

public function action_login()
{
	$data = array();

	// もし、あなたが送信ボタンを押下したならば、ステップを超えてへ行こう。
	if (Input::post())
	{
		// 資格を確認。これは前述のテーブルが作成され、
		// 上記のようにテーブルの定義および設定を使用していることが前提となります。
		if (Auth::login())
		{
			// 認証情報は OK 、ただちに下記へ
			Response::redirect('success_page');
		}
		else
		{
			// おっと!あなたにはあげれません。 再度ログインしてみてください。 username フィールドを再設定し、
			// ビューに戻っていくつかのエラーテキストを与えるためにいくつかの値を設定します。
			$data['username']    = Input::post('username');
			$data['login_error'] = 'Wrong username/password combo. Try again';
		}
	}

	// ログインフォームを表示
	echo View::forge('auth/login',$data);
}