2013-08-22 24 views
1

我想更改會話超時。我將超時設置爲1秒。Yii會話在webservice中超時

無論何時我登錄到系統,我可以在一分鐘之後使用登出服務,但它僅適用於登錄用戶。

注:我寫我自己的代碼登錄和註銷。

這裏是我進行登錄和signout服務代碼:

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 
    ), 

請告訴我是什麼問題...

+0

你有什麼意見?你試圖在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?

+2

您在此設置的'duration'與會話超時無關。這是「記住我」cookie的一生。 –

+0

這可以幫助我,在其他方面 但是有無論如何管理會話超時? –