6

Yii Web アプリにsimpleopenidselectorlightopenidを追加しました。ユーザーを認証し、openid データを含む URL を返します。次のステップは、OpenID プロバイダーからのデータを使用して Yii で新しい ID を作成し、ユーザーをログインさせることです。これは Yii でどのように行われますか?

また、openid を保存するために openid テーブルを作成する必要があり、ユーザー テーブルにユーザーを追加する必要があると思います。ユーザーがすでにアカウントを持っている場合は、openid をユーザー アカウントに追加して、複数のアカウントを防止します。

Yii でこれらすべてを達成した人はいますか? もしそうなら、私はそれがどのように達成されたかに非常に興味があります.

4

1 に答える 1

1

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-ユーザーテーブル」にいるかどうかを確認します

于 2011-08-16T09:05:39.183 に答える