1

セッションのタイムアウトを変更したい。タイムアウトを1秒に設定しました。

system にサインインするたびに、サインアウト サービスを 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
    ),

何が問題なのか教えてください...

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

それでもセッションを使用して自分のものを自分で処理したい場合、セッション タイムアウトの問題、Yii の問題だけではないと思います。参照する必要があります。

PHP セッションを 30 分後に期限切れにするにはどうすればよいですか?

于 2013-08-22T07:27:14.707 に答える