在Yii中使用Sessions,Cookies时的真正困境

时间:2014-07-20 10:40:40

标签: session cookies yii setstate

我在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}}是否会获取值?

感谢您的支持!

1 个答案:

答案 0 :(得分:0)

我只会使用会话。 Cookie很容易被篡改,用户可能会为自己分配另一个角色ID。会话有点安全。

使用您的WebUsers getRole(),将其缓存在会话中,就像您上面一样。这可以。只需在顶部检查,如果有会话var roleId立即返回它。如果没有,请加载用户并像现在一样将其送到那里。