我在WebUser中为我的属性/方法设置了会话,如下面的
public function getRole(){
$user = $this->loadUser(Yii::app()->user->id);
$this->setState('roleId', $user->roles_id);
return $user->roles_id;
}
在配置中,我将自动启动会话设置为'true',将cookieMode设置为'only'。据我所知,当我'setState'时,同时创建具有相同名称的cookie以及会话变量。目前,我使用Yii::app()->user->roleId;
我的问题是:
a)要使用已设置的cookie和/或会话变量,我应该使用Yii::app()->request->cookies['roleId']; or Yii::app()->session['roleId']?
b)如果已将Yii::app()->user->roleId
设置为Cookie或Session而不是再次运行整个方法,那么调用{{1}}是否会获取值?
感谢您的支持!
答案 0 :(得分:0)
我只会使用会话。 Cookie很容易被篡改,用户可能会为自己分配另一个角色ID。会话有点安全。
使用您的WebUsers getRole()
,将其缓存在会话中,就像您上面一样。这可以。只需在顶部检查,如果有会话var roleId
立即返回它。如果没有,请加载用户并像现在一样将其送到那里。