Web服务中的Yii会话超时

时间:2013-08-22 06:23:17

标签: web-services yii session-timeout

我想更改会话超时。我将超时设置为1秒。

每当我登录系统时,我都可以在一分钟后使用注销服务,而这只是为登录用户而设。

注意:我编写自己的代码进行登录和注销。

这是我的登录和注销服务代码:

public function actionSignin()
{
    $model= new Users();
    $model->scenario ="signin";

    if(isset($_POST['Users']))
      {

        $model->attributes=$_POST['Users'];
        $model->validate();

        if($model->hasErrors()){
            if($model->hasErrors("username"))
                $result=array("status"=>$model->getError("username"));
            else if($model->hasErrors("password"))
                $result=array("status"=>$model->getError("password"));
        }else{

            $user = $model->get_user();
            $result['user'] =  $user;
            //// creating session
            $session=new CHttpSession;
            $session->open();
            $session['name']=$user['username']; 
            $result=array("status"=>ErrorManager::get("OK");                    
        }
    }else{
        $result=array("status"=>ErrorManager::get("no_data_submitted"));        
    } 
    $this->renderPartial("/print_result",array("result"=>$result,));
}




public function actionSignout(){
    $session=new CHttpSession;
    if(isset($session['name']))
    {
        $result = array("status"=>ErrorManager::get("OK"));     
        $session->destroy();
        $this->renderPartial("/print_result",array("result"=>$result);
    }
}

我的配置文件(main.php)中有会话配置:

'components'=>array(
    'session' => array (
        'class'=>'CHttpSession',
        'cookieMode' => 'allow',
        'timeout' => 1
    ),

请告诉我问题是什么......

1 个答案:

答案 0 :(得分:0)

我建议您使用Yii已经完成的存在登录功能来处理它。只需打开文件protected/model/LoginForm.php即可查看您遗失的内容。看看

public function login()

这就是你错过的

Yii::app()->user->login($this->_identity,$duration); // $duration is what you have to set

如果您仍然希望使用会话来处理您自己的事情,会话超时问题,我认为这不仅仅是Yii问题,应该参考

How do I expire a PHP session after 30 minutes?