ユーザーが数分間アイドル状態のときにアプリケーションがログアウトする方法を知りたいと思います。私はいくつかのことを研究しましたが、役に立たないものは何も見つかりませんでした。私はcodeigniter非アクティブセッションログアウト
CodeIgniterの3を使用しています
ありがとうございました。
ユーザーが数分間アイドル状態のときにアプリケーションがログアウトする方法を知りたいと思います。私はいくつかのことを研究しましたが、役に立たないものは何も見つかりませんでした。私はcodeigniter非アクティブセッションログアウト
CodeIgniterの3を使用しています
ありがとうございました。
ユーザーがログインページに送信されることを確実にしたい場合は、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);
}
}