1

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

每当我登录 system 时,甚至一分钟后我都可以使用注销服务,而它仅适用于已登录的用户。

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

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

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

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

4

1 回答 1

0

我推荐你使用 Yii 已经完成的现有登录功能来处理它。只需打开文件protected/model/LoginForm.php即可查看您缺少的内容。看着

public function login()

这就是你所缺少的

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

如果你还想用 session 自己处理你的东西, session timeout 的问题,我想这不仅仅是 Yii 的问题,应该参考

如何在 30 分钟后使 PHP 会话过期?

于 2013-08-22T07:27:14.707 回答