YII 增加登陆认证
2015-08-27 14:37
573 查看
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';
并且还要相应的判断
4.在USER COMPONENT中要实现3中的loginByGzhAccessToken
5.在GZH MODEL中也要继承IdentityInterface
并且实现所有接口
解决方法是修改框架认证部分的代码如下:
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中的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
并且实现所有接口
相关文章推荐
- php + mysql + sphinx 的全文检索(2)
- PHP中session_register函数详解【转】
- PHP 自动加载类
- php mysql 安全 防止SQL注入
- laravel框架session使用教程
- PHP常用正则表达式汇总
- php正则表达式以及正则函数详解
- 初学THINKPHP,感觉很强大
- YII2资源集
- thinkphp系统常量与自定义常量
- php缓存
- 模块搭建LAMP和fastcgi 方式搭建LAMP
- ThinkPHP导入PHPExcel
- Laravel5.1快速查询
- 这里讨论二个 PHP CURL CURLOPT 参数
- php调用短信接口,php发送短信接口
- php session跨页面传递 session值丢失问题
- PHP初学分享-数据类型
- opencart安装和使用PHPMailer
- PHPExcel开发者文档[中文版]