2014-04-01 30 views
0

我在用户标识类中创建一个状态变量,并在控制器中的一个操作中使用。在使用之前,我想检查状态变量是否存在。即如何超时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分钟后取消设置/销毁状态变量'图片'。

任何方式在Yii做到这一点?

回答

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 
}