SimpleAuth - はじめに
Simpleauth is, as it's name implies, a simple authentication system which is included in the Auth package. Besides being a working Auth implementation, it is also an example for other Auth drivers. You can use this as a reference when building your own driver.
Auth のセットアップ
Configuration starts with telling the Auth package that you are going to use the Simpleauth driver. This is done through the auth.php configuration file. A default file is provided in the Auth package. You should copy this file to your app/config folder before making any changes. The default file is already configured for the Simpleauth package. You will find an explaination of this config file here.
上記の後に、パッケージをオートロードするかどうかを app/config/config.php の always_load セクションで指定します。
ACL's
SimpleAuth には、以下の ACL の仕組みをサポートしている ACL ドライバが付属しています:
- Every user is a member of one, and exactly one, group すべてのユーザは、いずれかのメンバーであり、正確に 1 つのグループ
- すべてのグループはグループに割り当てられた 0 個以上のロールを持っている
- すべてのロールはそれに割り当てられた 0 個以上の権限を持つことができます
When checking for access, you specify the required access as either role.right
(when you want to check for
a single right, or role.[right,right]
when you want to check for multiple rights at once. This is an AND check,
so when you specify multiple rights, the user must have ALL of them assigned to be granted access.
設定
The Simpleauth authentication system is configured through a configuration file, not suprisingly called 'simpleauth.php'. A default file is provided in the Auth package. You should copy this file to your app/config folder before making any changes.
下記の設定値が定義されています:
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
db_connection | 文字列 |
|
利用するデータベース接続の名前。 db.php の config ファイルでの名称と一致させる必要があります。 null でデフォルトの DB インスタンスを使います。 |
table_name | 文字列 |
|
利用するユーザ情報を定義したテーブル名。 |
table_columns | 配列 |
|
ユーザ情報のテーブルのうち、 select するカラムのリスト。 '*' で全カラムを select 。少なくとも、 'username', 'password', 'email', 'last_login', 'login_hash', 'group', 'profile_fields' を含んでいる必要があります。 |
guest_login | 論理型 |
|
true の場合には誰もログインしていない場合にダミーの 'guest' ユーザーが作成されます。 誰もログインしていない場合でさえグループと ACL のドライバを使用することが可能となります。 |
remember_me | array |
|
Configuration for the Simpleauth 'remember_me' functionality |
multiple_logins | boolean |
|
If true multiple concurrent logins of the same user are allowed. If false, when a user logs in, any previous login will be cancelled. Note that enabling this will disable some login session hijacking measures! |
groups | 配列 |
|
SimpleAuth Group ドライバで利用する定義済みの Group 。詳細な Group 配列については、 こちらを参照。 |
roles | 配列 |
|
SimpleAuth ACL ドライバで利用する定義済みの ACL 。詳細な ACL 配列については、 こちらを参照。 |
login_hash_salt | 文字列 |
|
SimpleAuth で利用されるパスワードをよりセキュアにするために、パスワードのハッシュ値をデータベースに保存する際に、サルトが使われています。 デフォルトのものから、ランダムな文字列に変更することを忘れないように! パスワードのハッシュ化にあたり、 SimpleAuth は非常にセキュアな機構である PBKDF2 を利用しています。 |
username_post_key | 文字列 |
|
ログインフォームのユーザ名を入力するフィールド名。 |
password_post_key | 文字列 |
|
ログインフォームのパスワードを入力するフィールド名。 |
If you want to use the 'remember-me' functionality, make sure you have a valid Crypt configuration, as it uses an encrypted cookie to store the user information to be remembered.
データベーステーブル
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);
}