2012年12月14日金曜日

ユーザー認証にチャレンジ

複数回になりそうです。

まずは公式ドキュメントを確認。
http://fuelphp.com/docs/packages/auth/simpleauth/intro.html

当然英語です。。。
かなり適当に和訳。あっているかも怪しいですw。


Introduction
SimpleAuthはその名のとおり認証パッケージに含まれているシンプルな認証システムです。Authの動作、実装のサンプルであり、他の認証ドライバのサンプルでもあり、独自ドライバを作成するときの参考資料とすることができます。
Auth setup
設定は SimpleAuth ドライバを使用することを Auth package に伝えることから始まります。これは auth.php コンフィグファイルで設定します。デフォルトのファイルは Auth package にあります。変更を加える前にあなたの app/config フォルダにこのファイルをコピーしてください。デフォルトで SimpleAuth package用に設定されている。コンフィグファイルについての説明は 後のconfigrationを参照してください。
セットアップ完了後、app/config/config.php always_load 部分でパッケージのオートロードを行うかを選択できます。
Configuration
SimpleAuth認証システムはコンフィギュレーションファイルを使用して構成されます。'simpleauth'コンフィギュレーションファイルに驚くところはありません。デフォルトのファイルは、 Auth package にあります。変更を加える前に、app / configフォルダにこのファイルをコピーしてください。
The following configration values can be defined:
次の設定値を定義することができます:
Param
Type
Default
Description
db_connection
string
null
使用するDB接続名称。db.php ファイルの定義と一致させる必要があります。デフォルトはnull
table_name
string
'users'
使用するユーザーテーブルの名称
table_columns
array
array('*')
配列でユーザーテーブルから選択、またはすべてのカラム。最低でも username, password, email, last_logoin, login_hash, group, profile_fieldsは指定する必要がある。
guest_login
boolean
true
true なら誰もログインしていない場合、ダミーゲストユーザを作成することによりグループ、acl driversの使用を許可します。
groups
array
array()
SimpleAuth groups driver によるグループの定義。グループの配列詳細については*ここを参照してください。
roles
array
array()
SimpleAuth groups driver による role 定義。roles の配列詳細については*ここを参照してください。
login_hash_salt
string
'put_some_salt_in_here'
SimpleAuth ドライバでパスワードを安全に作成するためのソルト値はパスワードのハッシュ値を計算し、データベースへの格納に使われます。デフォルトパスワードは PBKDF2 ですが、ランダムな文字列にデフォルトを変更してください。
username_post_key
string
'username'
ログインフォームの username インプットフィールドの名称を指定します。
password_post_key
string
'password'
ログインフォームの password インプットフィールドの名称を指定します。

Database table
SimpleAuth はひとつのテーブルを使用します。作成にはこの SQL を使用してください。

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`group` int(11) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL,
`last_login` varchar(25) NOT NULL,
`login_hash` varchar(255) NOT NULL,
`profile_fields` text NOT NULL,
`created` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `useranem` (`username`, `email`)
)

Example
サンプルのログインアクション
public function action_login()
{
$data = array();

//送信ボタンを押したら
if (Input::post())
{
$auth = Auth::instance();
if($auth->login())
{
Response::redirect('success_page');
}
else
{
//Oops
$data['username'] = Input::post('username');
$data['login_error'] = 'Wrong username/password combo. Try again';
}
}

//Show the login form
echo View::forge('auth/login',$data);

}

次は訳文のとおりSQLでテーブルを作成してみることにします。
当然、前回妄想したusersテーブルとはテーブル設計が異なりますw。
>続く

0 件のコメント:

コメントを投稿