yii1如何从Yii::app()获取用户数据->;用户命令


yii1 how to get userdata from Yii::app()->user command

我想获得登录用户的角色id,以使网站的特定链接可见。目前,我有学生和导师表,两个用户都可以单独登录。学生表的角色是1,导师表的角色为2,我如何检查登录用户的角色。

我试过

<?php echo Yii::app()->user->role;?>

但它返回错误

Property "CWebUser.role" is not defined.

请告知

有两种解决方案:

  1. 在扩展的CUserIdentity类中使用setState()。它在用户身份验证期间调用一次,在下次刷新页面时不会更新。不要将角色或密码等重要信息存储在那里,因为这些信息可能会存储在cookie中。可以很容易地将姓名、上次访问时间等信息存储在那里

以下是一个示例:http://www.yiiframework.com/wiki/6/how-to-add-more-information-to-yii-app-user

  1. 扩展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->roleYii::app()->user->getRole() ,则调用