我想获得登录用户的角色id,以使网站的特定链接可见。目前,我有学生和导师表,两个用户都可以单独登录。学生表的角色是1,导师表的角色为2,我如何检查登录用户的角色。
我试过
<?php echo Yii::app()->user->role;?>
但它返回错误
Property "CWebUser.role" is not defined.
请告知
有两种解决方案:
- 在扩展的
CUserIdentity
类中使用setState()
。它在用户身份验证期间调用一次,在下次刷新页面时不会更新。不要将角色或密码等重要信息存储在那里,因为这些信息可能会存储在cookie中。可以很容易地将姓名、上次访问时间等信息存储在那里
以下是一个示例:http://www.yiiframework.com/wiki/6/how-to-add-more-information-to-yii-app-user
- 扩展
CWebUser
并添加一些公共方法,例如getRole()
:
main.php
'user' => array('class' => 'application.components.WebUser')
WebUser.php
class WebUser extends CWebUser {
public $role;
public function getRole(){
if ($this->role === null) {
// Here you need to get User role
$this->role = Yii::app()->db->createCommand("SELECT role FROM {{user}} WHERE id=:id")->queryScalar(array(':id' => Yii::app()->user->id));
}
return $this->role;
}
}
如果需要Yii::app()->user->role
或Yii::app()->user->getRole()
,则调用