openIDのデータをYiiログインとして使用するには、UserIdentityクラス(保護/コンポーネント)を変更/上書きします。
既存の認証方法を上書きします。この時点で、次のように現在のYiiユーザー名を設定することもできます。
$this->username=$openId->username
(ここで$openId->username
、openIDユーザー名を含む変数に置き換える必要があります)
サイド/ログインアクションを上書きすることで、次のように変更したメソッドを呼び出すことができます。
$identity=new UserIdentity("m","m");//where m is dummy
if($identity->authenticate()) {
Yii::app()->user->login($identity);
[...]
}
//更新(コメントのため):問題を正しく理解しているかどうかはわかりません。しかし、authenticateOID()のような新しいメソッドをUserIdentityに追加するのはどうでしょうか。次のように、元のauthenticate()メソッドの先頭でこのメソッドを呼び出します。
if ($this->authenticateOID) {/*set username & return true to end the method here*/}
else {/*original authenticate method from Yii*/}
内部authenticateOID()
で、OID認証が行われたかどうか、および/またはユーザーがまだローカルの「OID-ユーザーテーブル」にいるかどうかを確認します