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
    并且实现所有接口

  • 相关阅读:
    面向连接的网络应用程序--服务器端
    使用完整读写函数的网络应用程序
    套接字编程基础
    网络编程基础
    传输控制协议TCP
    UDP协议
    电子词典
    strtok()函数、fseek()函数、fwrite()函数、fread()函数的使用
    指针与数组
    软件推荐----RDO(Remote Desktop Organizer)
  • 原文地址:https://www.cnblogs.com/wlemory/p/4763232.html
Copyright © 2011-2022 走看看