YII 增加登陆认证
YII驗證身份值可以設置一個MODEL來做為身份認證登陸的數據來源,這樣當一個WEB應用中有兩個角色并且都使用ACCESS TOKEN登陸時就會錯誤的把另一角色列為未認證的用戶。
解決方法是修改框架認證部分的代碼如下:
1. 在WEB CONFIG中設置另一個TOKEN的名字,注意如果有兩種角色,那么必須讓他們的TOKEN的名字是不一樣的。
??????? 'user' => [
??????????? 'identityClass' => 'app\models\Customer',//角色CUSTOMER
??????????? 'gzhIdentityClass' => 'app\models\GzhAd',//角色GZH
??????????? 'enableAutoLogin' => false,//disable the cookie login
??????? ],
2. 在USER COMPONENT(basic/vendor/yiisoft//yii2/web/user.php)中配合修改一要增加相應的字段名字,這里是$gzhIdentityClass
??? public $identityClass;
??? public $gzhIdentityClass;
3.在query parameter中要增加token的名字
??? public $gzhTokenParam = 'gzhToken';
??? 并且還要相應的判斷
//validate the token from 3rd party sever$gzhAccessToken = $request->get($this->gzhTokenParam);if (is_string($gzhAccessToken)) {$identity = $user->loginByGzhAccessToken($gzhAccessToken, get_class($this));//在這里要調取USER COMPONENT中的loginByGzhAccessTokenif ($identity !== null) {return $identity;}}?
?4.在USER COMPONENT中要實現3中的loginByGzhAccessToken
//validate the gzh access tokenpublic function loginByGzhAccessToken($gzhAccessToken, $type = null){$class = $this->gzhIdentityClass;$identity = GzhAd::findIdentityByAccessToken($gzhAccessToken, $type);if ($identity && $this->login($identity)) {return $identity;} else {return null;}}5.在GZH MODEL中也要繼承IdentityInterface
并且實現所有接口
轉載于:https://www.cnblogs.com/wlemory/p/4763232.html
總結
以上是生活随笔為你收集整理的YII 增加登陆认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调用python 报R6034 错误
- 下一篇: iOS:步进UIStepper、滑动块U