码迷,mamicode.com
首页 > 其他好文 > 详细

YII 增加登陆认证

时间:2015-08-27 15:01:30      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

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中配合修改一要增加相应的字段名字,这里是$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
并且实现所有接口

YII 增加登陆认证

标签:

原文地址:http://www.cnblogs.com/wlemory/p/4763232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!