WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [symfony] 既存のテーブルを利用する認証システムplugin

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

GmGuardPlugin


sfGuardPluginはすごく便利なのですが、「認証に利用するIDが固定されてしまう」という点と、「ユーザーのテーブルが1対1のリレーションで二つに分かれてしまうのが気持ち悪い」という点が気になって、作ってみました。sfGuardPluginを使った方がいいのかまだ少し悩んでますが、とりあえずアップしてみます。
ご意見ありましたらお願いします。

※対応ORMはpropelのみです。
※2009/5/22
remember meの機能でたまに挙動がおかしい時があるのに気づきましたが、1つのプロジェクトで複数のサブドメイン&アプリで運用していて、cookieなど様々なものが絡み合っているので、まだ突き止めていません。どうにか時間を作ってがんばります。何かありましたらコメントお願いします。
一つのユーザーIDが一つのハッシュしか持てなくなっていたので、修正しました。↑恐らくこれが原因です。

■インストール

symfony plugin-install http://plugin.gomo.jp/plugins/GmGuardPlugin/GmGuardPlugin-1.3.1.tgz
あるいは
symfony plugin-upgrade http://plugin.gomo.jp/plugins/GmGuardPlugin/GmGuardPlugin-1.3.1.tgz

※1.*から1.3.0にUPするときはDBを落として新しく作り直してください。
※1.3.0から1.3.1にUPするときもDBを落として新しく作り直してください。

symfony propel-build-sql
mysql -u root dbname < data/sql/plugins.GmGuardPlugin.lib.model.schema.sql
または
DROP TABLE IF EXISTS `gm_guard_remember`;
CREATE TABLE `gm_guard_remember`
(
`target_pkey` INTEGER NOT NULL,
`hash` VARCHAR(32) NOT NULL,
`ip_address` VARCHAR(50) NOT NULL,
`created_at` DATETIME,
PRIMARY KEY (`target_pkey`,`hash`)
)Type=InnoDB;


■~/apps/sys/lib/myUser.class.phpの継承元を変更

class myUser extends GmGuardSecurityUser
{
}


■~/apps/app_name/config/settings.yml設定

all:
.settings:
enabled_modules: [default, GmGuardAuth]

.actions:
login_module: GmGuardAuth
login_action: signin

secure_module: GmGuardAuth
secure_action: secure

ちなみにenabled_modulesというのは~/apps/app_name/modulesに無いmoduleを使いたいときに、ここに設定します。逆に言えば~/apps/app_name/modulesに置いたmoduleは自動的に使えるようになります。

■~/apps/app_name/config/app.yml設定
*は必須です。

all:
gm_guard_plugin:
class: Account #*認証に使うテーブルのclass名
id_column: email #*IDに使うカラム名
password_column: password #*パスワードに使うカラム名
credential_class: Credential #クリデンシャルに使うクラス名
credential_column: credential_name #クリデンシャルに使うカラム名。
                       credential_classを指定した場合はそのクラスのテーブルのカラム名。
                       単独で指定した場合はclassのカラム名
save_to_session_columns: [email,name] #セッション(sf_user)に保存するカラム
remember_cookie_expire: 60*60*24*30 #自動ログイン機能のクッキー保存時間
password_hash_func: md5 #パスワードをハッシュかするPHP関数
routes_register: on #認証ページに自動でルートを設定するか
redirect_uri: module/action #ログイン成功時、リダイレクトするURL
(リクエストしたページがあった場合はそちらに優先的にリダイレクトします)
remember_cookie: gm_remember_me
remember_me_ipcheck: false
cookie_domain: .gomo.jp


■自動ログイン機能を使うならフィルターをONにする。

security:
class: GmGuardRememberFilter


1.3.1同じIDで複数のハッシュを持てるように修正。合わせて1.3.0のcookieの名前を保存するのをやめました。
1.3.0remember_cookieをDBに保存するようにしました。同じDBを使って複数のサブドメインで別セッションを使いたい時使えます。
1.2.1ログアウト時、戻り先のURLをクリアーするように変更
1.2.0クリデンシャルが1:nの別テーブルの場合に対応
1.1.0remember_me_ipcheckと cookie_domainを追加。
1.0.3戻り先のセッションを保存する挙動を見直しました。
1.0.2ログイン成功時にリダイレクトするURLをセットできるようにしました。
1.0.1secureとsignoutのアクション時に間違えてsigninにリダイレクトしていました。

[symfony 1.1.6]
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。