[英]How do I login the user with Yii and OpenID
我已將simpleopenidselector和lightopenid添加到我的 Yii web 應用程序中,它確實對用戶進行了身份驗證,並返回一個 url 和 openid 數據。 下一步是使用來自 OpenID 提供者的數據在 Yii 中創建一個新的身份來登錄用戶。 Yii 如何做到這一點?
另外,我認為我需要創建一個 openid 表來存儲 openid 並且還需要將用戶添加到我的用戶表中。 如果用戶已經有一個帳戶,則將 openid 添加到他們的用戶帳戶以防止多個帳戶。
有沒有人用 Yii 實現了所有這些? 如果是這樣,我會對它是如何完成的非常感興趣。
要將 openID 中的數據用作 Yii 登錄,您可以修改/覆蓋 UserIdentity Class(受保護/組件)。
覆蓋現有的身份驗證方法。 此時您也可以設置當前的 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 - 用戶表”中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.