如何使用Yii和OpenID登录用户

时间:2011-08-12 16:02:20

标签: openid yii lightopenid openid-selector

我已将simpleopenidselectorlightopenid添加到我的Yii网络应用中,它会对用户进行身份验证,并返回包含openid数据的网址。下一步是使用OpenID提供程序中的数据在Yii中创建新标识以登录用户。如何用Yii完成?

另外,我认为我需要创建一个openid表来存储openid,还需要将用户添加到我的用户表中。如果用户已经拥有帐户,则将openid添加到其用户帐户以防止多个帐户。

有没有人用Yii实现了这一切?如果是这样,我会对它是如何完成感兴趣。

1 个答案:

答案 0 :(得分:1)

要使用openID中的数据作为Yii登录,您可以修改/覆盖UserIdentity类(受保护/组件)。

覆盖现有的身份验证方法。 此时,您还可以设置当前的Yii用户名,例如:

$this->username=$openId->username

(其中$openId->username应替换为包含openID用户名的变量)

通过覆盖side / login操作,您可以调用修改后的方法,如下所示:

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

//更新(因为你的评论): 如果我理解你的问题,我不确定。但是在UserIdentity中添加一个新方法是什么,比如authenticateOID()。在原始authenticate()方法的开头调用此方法,如下所示:

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

authenticateOID()内,您检查OID身份验证是否已完成和/或用户是否仍在本地“OID - 用户表”