我是yii的新手,我正在使用yii框架创建一个网站。这是我第一次进行USER LEVEL ACCESS。我在 protected / controllers / 中创建了一个 EWebUser.php 文件,这是我的代码`
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->status;
return '';
}
}
然后我还在 AdminController 中创建了 accessRules 功能。这是我的代码
public function accessRules() {
return array(
array('allow',
'actions'=>array('index','delete','btnconf'),
'expression'=>'$user->getLevel()="supadmin"'
)
);
}
`
当我在用户登录时在网址中键入 http://localhost/coretankuyii/index.php/admin/index
,管理员甚至还没有登录仍然可以访问它。我希望能够访问该URL的人只有status = supadmin的人。你可以帮帮我吗?
答案 0 :(得分:2)
将表达式更改为“==”
public function accessRules() {
return array(
array('allow',
'actions'=>array('index','delete','btnconf'),
'expression'=>'$user->getLevel()=="supadmin"'
)
);
}
如果这不起作用,请尝试以下
public function accessRules() {
return array(
array('allow',
'actions'=>array('index','delete','btnconf'),
'expression'=>array('AdminController','getLevel');
)
);
}
public function getLevel(){
$user = $this->loadUser();
if($user->status=='supadmin')
return true;
else
return false;
}