如何在Yii中超时会话状态变量?

时间:2014-04-01 14:22:47

标签: php session yii

我在用户身份类中创建一个状态变量,并在控制器中的一个动作中使用。在使用之前我想检查状态变量是否存在。即

在userIdentity类中:

Yii::app()->user->setState('pictures', array());//Want this variable to die after 5 mins

在我的控制器操作中:

if(isset(Yii::app()->user->pictures))
{

 //do what I want if state variable picture is set
}

有没有办法为会话状态变量设置超时? 我知道我们可以在配置文件中提供会话超时但是会注销不是我想要的用户。我只想在5分钟之后取消/销毁状态变量'pictures'。

在Yii中有什么办法吗?

1 个答案:

答案 0 :(得分:0)

据我所知,Yii中没有这样的内置机制,所以

成功登录:

Yii::app()->user->setState('pictures', array());
Yii::app()->user->setState('logged_time', microtime(true));
每次请求前

if (Yii::app()->user->hasState('logged_time') 
&& (microtime(true) - Yii::app()->user->logged_time > 300)) {
    Yii::app()->user->setState('pictures', null); // unset pictures state
    Yii::app()->user->setState('logged_time', null); // unset logged_time if necessary
}