簡體   English   中英

如何使用 Yii 和 OpenID 登錄用戶

[英]How do I login the user with Yii and OpenID

我已將simpleopenidselectorlightopenid添加到我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM