2011-08-12 8 views
6

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

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

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

+0

私はそれを自分で使っていませんが、これを[yii-user](http://www.yiiframework.com/extension/yii-user/)拡張と統合することは可能でしょうか? – ldg

+0

@ldg - [yii-user-management](http://www.yiiframework.com/extension/yii-user-management/)にはopenidが含まれていますが、私はユーザ管理全体を必要としません。彼らがopenidログイン部分をどのように実装しているかを見るのに十分なコードを守ってはいけません。私はOOPスタイルでコーディングを開始したので、難しくなっています。あなたが言いましたyiiユーザーのリンクで私はopenidを見ませんでした。 – Mark

答えて

1

openIDのデータをYiiログインとして使用するには、UserIdentityクラス(protected/components)を変更または上書きできます。

既存の認証メソッドを上書きします。この時点で、あなたはまた、のような現在のYiiのユーザー名を設定することができ :

側/ログインアクションを上書きすることで

$openId->usernameはOpenIDのユーザー名が含まれている変数で置き換える必要があります)

$this->username=$openId->username 

$identity=new UserIdentity("m","m");//where m is dummy 
if($identity->authenticate()) { 
      Yii::app()->user->login($identity); 
[...] 
} 

//(なぜなら、あなたのコメントの)更新: ない私はあなたの問題の権利を理解していれば、必ずこのように、変更したメソッドを呼び出すことができます。しかし、authenticateOID()のようにUserIdentityに新しいメソッドを追加するのはどうでしょうか。そのように、元のauthenticate()メソッドの開始時に、このメソッドを呼び出す:OID認証が行われているかどうかをチェック

if ($this->authenticateOID) {/*set username & return true to end the method here*/} 
else {/*original authenticate method from Yii*/} 

authenticateOID()内部および/または場合で、まだユーザーあなたローカル「OID - ユーザテーブル」

+0

登録されたユーザーとopenidユーザーにログインする必要があるので、私は現在の認証を上書きしたり変更したりしません。私はUserIdentityを修正しようとしましたが、openidのユーザー名しかないときには常にユーザー名とパスワードが必要な問題にぶつかりました。 openidユーザが登録ユーザであるかどうかをチェックする必要があります。申し訳ありませんが意味がない場合は...私はYiiとOOPの新人です。 – Mark

+0

@マーク私は自分の投稿を更新しました。おそらくこれは役に立ちますか? –

+0

認証部分はOKですが、私はうまくいかないような新しいUserIdentity部分です。 OpenIDログインが認証された後、私はそれをもう一度認証する必要はありません。少なくとも私が考えていたことです。ユーザーがOpenID経由で認証された後、新しいUserIdentityを作成したいと思いますが、現在のYiiユーザーのログイン方法ではログイン時にユーザーパスワードが必要となり、OpenIDは問題ではありません。 – Mark

関連する問題