0

我在 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 而不是再次运行整个方法,调用会得到我的值吗?

我感谢您的支持!

4

1 回答 1

0

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

为此使用您的 WebUsers getRole(),它会像上面那样将其缓存在会话中。这可以。只需在顶部打勾,如果有会话变量roleId立即返回。如果没有,请加载用户并像您已经拥有的那样将其带到那里。

于 2014-07-20T11:14:29.853 回答