2011年12月2日

Yii Framework: ユーザログイン後の処理について

Yii の API を眺めていたら CWebUser クラスに afterLogin() というメソッドがあったのでテストしてみました (afterLogin() は v1.1.3 以上で使用可) 。例えば、ユーザがログインした後に自動で、IPアドレスと、ログイン日時をデータベースに保存したい時なんかに便利かと思われます。

やり方

CWebUser を継承した WebUser クラスを protected/components 下に作成し、
afterLogin() メソッドを上書き (ファイル名、クラス名などは任意) 。 続いて protected/config/main.php を編集。 CWebUser クラスを API で見る限り、ログイン、ログアウトまわりのメソッドとして beforeLogin(), beforeLogout(), afterLogin(), afterLogout() などがあります。

もちろん、例えばコントローラなどの actionLogin() で、バリデーションが通ったあとに、afterLogin() と同じようなコードを書くこともできますが、ログイン、ログアウト周りの実装を一元管理できる利点もあり、また CWebUser クラスには他にも、さまざまな重要な役割があるので、それをまとめてひとつのクラスファイルとして扱え、かつカスタマイズできることを考えると、使わない手はないと思います。

ただ、エクステンションの yii-user などを見ていたら、このへんを一元管理しておらず、部分部分で実装しているようです (これはおそらく v.1.1.3 になる以前に yii-user が作られたことが理由かもしれませんが) 。

参考リンク

0 件のコメント:

コメントを投稿