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


How to time out a session state variable in 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 中做到这一点吗?

据我所知,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
}