我有这个函数来检查当前选项卡中的 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/