zoukankan      html  css  js  c++  java
  • YII 增加登陆认证

    YII验证身份值可以设置一个MODEL来做为身份认证登陆的数据来源,这样当一个WEB应用中有两个角色并且都使用ACCESS TOKEN登陆时就会错误的把另一角色列为未认证的用户。

    解决方法是修改框架认证部分的代码如下:

    1. 在WEB CONFIG中设置另一个TOKEN的名字,注意如果有两种角色,那么必须让他们的TOKEN的名字是不一样的。

            'user' => [
                'identityClass' => 'appmodelsCustomer',//角色CUSTOMER
                'gzhIdentityClass' => 'appmodelsGzhAd',//角色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中的loginByGzhAccessToken
                if ($identity !== null) {
                    return $identity;
                }
            }

     4.在USER COMPONENT中要实现3中的loginByGzhAccessToken

        //validate the gzh access token
        public 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
    并且实现所有接口

  • 相关阅读:
    冒泡排序
    位运算查缺补漏
    单元测试Junit5+Mockito3+Assertj
    插入排序
    Java异常处理
    Redis数据结构-list
    Redis数据结构-hash
    Redis全局命令
    对各向异性高光的理解
    OpenGL投影矩阵(Projection Matrix)构造方法
  • 原文地址:https://www.cnblogs.com/wlemory/p/4763232.html
Copyright © 2011-2022 走看看