php - 求教Yii2里的identity
巴扎黑
巴扎黑 2017-04-10 15:53:03
[PHP讨论组]

目前系统账户我分了2个表
admin, user

登陆入口使用同一个
class LoginForm extends Model
只是在进行登陆验证的时候根据用户名分了一下

 public function getUser(){
   if ($this->_user === false) {
     if($this->uname == 'root'){
       $this->_user = Admin::findByUsername($this->uname);
     }else{
       $this->_user = User::findByUsername($this->uname);
     }            
   }
   return $this->_user;
}

配置文件是这样的

'user' => [
            'class'             => '\yii\web\User',
            'identityClass'     => 'models\User',
            'enableAutoLogin'   => true,
            'idParam'           => '_user',
        ],
'admin' => [
            'class'             => '\yii\web\User',
            'identityClass'     => 'models\Admin',
            'enableAutoLogin'   => true,
            'idParam'           => '_admin',
        ],

但是我在登陆的时候一直取不到 admin的数据
Yii::$app->admin->identity 是空的
Yii::$app->user->identity 没有问题

最后我进了 \yii\web\User 里 发现 $class = $this->identityClass; 值一直是 models\User
根本没有 models\Admin

求解

巴扎黑
巴扎黑

全部回复(3)
阿神

解决了, 登陆这块没问题, 坑的是用户状态那块没改, 原来代码是这样的

if(Yii::$app->user->isGuest) {
  if($this->id != 'login') {
  $this->redirect('/login');
}

所以登陆只验证了 User, 根本没Admin什么事

所以这块需要分成
Yii::$app->user->isGuest

Yii::$app->admin->isGuest

两部分

顺便谢谢 鸟语花香

PHPz

按你的说法\yii\web\user里的$class = $this->identityClass值应该会出现models\Admin咯?那你没有\yii\web\admin吗?

高洛峰

就喜欢这种有提问,有答案的文章

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号