我想创建一个用户访问级别,但我有问题,admin(其id_level = 1)仍然无法访问指定的页面。 我在这里有EWebUser.php
<?php
class EWebUser extends CWebUser{
protected $_model;
protected function loadUser()
{
if ( $this->_model === null ) {
$this->_model = User::model()->findByPk($this->id);
}
return $this->_model;
}
function getLevel()
{
$user=$this->loadUser();
if($user)
return $user->id_level;
return 100;
}
}
?>
然后是UserController.php中的accessRules方法
public function accessRules()
{
return array(
.......
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('index','admin','delete'),
//'users'=>array('admin'),
'expression'=>'$user->getLevel()<=1',
),
.......
);
}
我无法访问localhost / myappname / user.php,它会抛出错误403,尽管我以Admin(id_level = 1)身份登录。
我发现了$this->_model = User::model()->findByPk($this->id);
,我做了更改$this->id_user
,因为在我的模型中,主键是id_user
而不是id
但是它会引发另一个错误:属性“EWebUser.id_user”不是定义。有人可以帮我解决这个问题吗?提前谢谢..
答案 0 :(得分:0)
[求助]我自己在UserIdentity.php中将$this->_id = $user->username;
更改为$this->_id = $user->id_user;
,$this->_model = User::model()->findByPk($this->id);
上没有错误的代码,因为实际问题出在UserIdentity