解决⾃动清除缓存,每天都需要重新登录
问题场景:新版会⾃动清空cookie,导致每天都要重新登录
解决思路:后端是通过session来获取⽤户是否登录,⽽session信息会存在客户端的cookie⾥⾯,然后每次请求接⼝的时候。⼜会⾃动带上cookie上⾯的信息,传给后端。所以我们可以在登录的时候让后端把登录信息传过来,然后存在localstorage⾥⾯,在⾸页需要登录的页⾯⾥⾯获取localstorage⾥⾯的值,设置在cookie上,这样在每次进⾏ajax请求的时候,浏览器会⾃带将存在cookie上⾯的⽤户信息传过去,服务器会根据cookie上⾯的信息去数据库读取sessionid做判断
login页⾯
flag = false;
为什么要用ajax
$.ajax({
url:'ajaxLogin',
type:'post',
data:{"nc_token":nc_token,"csessionid":csessionid,"scene":scene,"sig":sig,tel:tel,verifyCode:verifyCode,redirect_url:redirect_url,remeber:1, from : from},
success: function(res){
//console.log(res);
if(res.status == 1000){
var tipMsg = res.data ? res.data : '登录成功~';
//$.alert('tipMsg');
window.localStorage.setItem('username',tel);
$('#getVerifyCode').removeClass('btn-blue').addClass('btn-disabled');
flag = true;
setTimeout(function(){
window.location.href = res.data
},500);
//pobp838totku433ts210d7b2s0
var PHPSESSID_cookie =  getCookie("PHPSESSID");
var m_enstr = getCookie('m_enstr');
if(PHPSESSID_cookie){
window.localStorage.setItem("PHPSESSID",PHPSESSID_cookie);
window.localStorage.setItem("act_m_enstr",m_enstr);
}
window.localStorage.setItem("act_login",1);
var expires = new Date().getTime() + 14*24*3600*1000;
window.localStorage.setItem("expires",expires);
}else{
$.alert(res.data);
flag = true;
}
},
error: function(){
$.alert('出错啦!');
flag = true;
}
})
index
//判断是否登录
var is_login = "{$is_login}";
if (!is_login) {
var act_login = Item("act_login");
var expires = parseInt(Item("expires"));
var PHPSESSID = Item("PHPSESSID");
var act_m_enstr = Item('act_m_enstr');
var nowtime = new Date().getTime();
var PHPSESSID_oldcookie = getCookie("PHPSESSID");
if (PHPSESSID_oldcookie != PHPSESSID) {
if (act_login == "1" && nowtime < expires) {
setCookie("PHPSESSID", PHPSESSID, 14);
setCookie("m_enstr", act_m_enstr, 14);
load();
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。