我想获取已登录用户的角色ID,以显示网站的可见特定链接。目前我有学生和导师表,并为两个用户单独登录。学生表的角色为1,教师表的角色为2,如何查看已登录用户的角色。
我试过
<?php echo Yii::app()->user->role;?>
但它返回以下错误
Property "CWebUser.role" is not defined.
请咨询
答案 0 :(得分:2)
有两种解决方案:
setState()
课程中使用CUserIdentity
。它在用户身份验证期间调用一次,并且在下一页刷新时不会更新。不要存储角色或密码等重要信息,因为它可以存储在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()