javascript - AJAX 函数检测 session 何时过期并注销

标签 javascript php jquery ajax codeigniter

我有这个函数来检查当前选项卡中的 session 是否已过期。但是,如果我打开另一个选项卡并从那里注销,我当前的选项卡将不知道,并且它会以某种方式维持其 session ,直到我从导航菜单访问某个项目。有没有办法通过检测用户何时注销或用户 session 是否已过期来改进此问题?

现在的主要问题是他们是否打开另一个选项卡并从那里注销。

function check_if_logged_in(){
    $.ajax({
        method: "POST",
        url: "<?php echo site_url('Common/CheckSession'); ?>",
        beforeSend: function () {
            $('.loading').show();
        },
        success: function(data){
            if(data==="undefined"||data===null||data===0){
                console.log("logged out");
//                window.location.replace("<?php // echo BASE_URL;?>");
            }else{
                console.log("logged in");
            }
            $('.loading').fadeOut("slow");
        },
    });
}

这是我的 checkSession 函数

public function checkSession(){
        if($this->logged_in()===false){
            echo false;
        }else{
            echo true;
        }
    }

this->logged_in() 只是检查 session 是否仍然处于事件状态。

我已经阅读过有关 HTML5 的 LocalStorage 的内容。我想知道这是否会影响移动设备,因为网站本身是响应式的,而且我听说 iOS 或某些设备不支持 LocalStorage。

最佳答案

你应该编写一个可以在每个文件中访问的js函数。最有可能在您的页脚中。

然后编写以下代码,该代码将每隔 5 秒调用一次(您可以根据自己的方便进行更改)。

 $( document ).ready(function() {
    setInterval(function () {
        checkSession();
    }, 5000);
});


function checkSession()
{
    $.ajax({
        type: "POST",
        url: "your_session_checking_function",
        success: function (data) {
            data = JSON.parse(data);
            if(data.response != "true")
            {   
                window.location.href = 'redirect to login page';  
            }
        }
    });
}

然后根据ajax success得到的结果就可以重定向到登录页面了。

关于javascript - AJAX 函数检测 session 何时过期并注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49084166/

相关文章:

php - 存储配置数据 - 哪种方式?

javascript - 使用 jQuery 的 .prop 方法将属性设置为函数

jquery - 如何在amcharts的 donut chart 中使用多种颜色?

javascript - 如何使用 Javascript 使图像在屏幕右侧移动并返回

javascript - 悬停时不显示工具提示

Javascript/jQuery 获取我正在输入的文本区域的 id

PHP:是否有一种设计模式可以将对象保存在数据库中?

javascript - graphql POST 请求出现意外的 EOF

php - 音频播放器 : Load random song from database table without repeating

javascript - 使用 JQuery 获取触发事件的元素的类