2016-12-23 7 views
0

ユーザーが数分間アイドル状態のときにアプリケーションがログアウトする方法を知りたいと思います。私はいくつかのことを研究しましたが、役に立たないものは何も見つかりませんでした。私はcodeigniter非アクティブセッションログアウト

CodeIgniterの3を使用しています

ありがとうございました。

答えて

1

ユーザーがログインページに送信されることを確実にしたい場合は、ajaxを使用してコントローラのlogged関数を呼び出して、ユーザーのセッションが有効かどうかを評価します。

setInterval(function(){ 
    $.getJSON('url/to/controller/logged', function(response) { 
     if (typeof response.redirect != 'undefined') { 
      window.location.href = response.redirect; 
     } 
    }); 
}, <INTERVAL-IN-MILLISECONDS>); 

その均一にするため、あなたはあなたのすべての資格情報の保護コントローラを拡張するために使用されることを、application/core/MY_Controller.php下、MY_Controllerという名前のクラスに元CI_Controllerクラスを拡張することができます。 コントローラ内の関数が呼び出されるたびに、not_logged_in()関数が最初に呼び出されます。セッションが期限切れになっている場合、セッションの種類に応じてリダイレクトが処理されます。それ以外の場合は正常に動作します。

class MY_Controller extends CI_Controller{ 

    public function __construct(){ 
     parent::__construct(); 
     $this->not_logged_in(); 
    } 

    private function not_logged_in(){ 
     $is_logged_in = $this->session->userdata('is_logged_in'); 

     // The cookie was not found or has expired 
     if(!isset($is_logged_in) || $is_logged_in != true) 
     { 
      /* AJAX request check 
      * If it is not a AJAX request then redirects to login page 
      */ 
      if(! $this->input->is_ajax_request()) { 
       redirect('login'); 
      } else{ // send and JSON message to redirect 
       echo json_encode(array(
        'status' => FALSE, 
        'message' => 'Your session expired. Please, login.', 
        'redirect' => base_url('login') 
       )); 
       exit(); 
      } 
     } 
    } 

    public function logged() 
    { 
     // Request coming from AJAX call 
     if($this->input->is_ajax_request()) { 
      echo json_encode(array('status' => TRUE, 'message' => 'You are still logged in.')); 
     } 
     else { 
      show_404(); 
     } 
    } 

} 

あなたはログインクラスに変更する必要がある唯一のことは、あなたのクッキーにis_logged_inフィールドを追加することになります。

class Login extends CI_Controller{ 

    // function called to validate credentials 
    public function validate() 
    { 
     // ... code to validate login 

     // If the user is validated 
     $data = array(
      'is_logged_in' => true, 
      ... // more user data, if you will 
     ); 

     $this->session->set_userdata($data); 
    } 
} 
関連する問題