1、微信公众号开发中使用cookie或者localstorage做用户登录的缓存都可以
遇到的问题:在使用localstorage的时候,微信调用第三方页面的时候,返回来处理逻辑的时候,localstorage保存的数据出现了丢失,这是有些手机导致的!但是使用cookie就不会导致这种情况发生
有些机型不能存储信息到localStorage中,或者是页面一旦关闭或微信退出之后,存储的信息也失效了。
百度上也有很多人吐槽这个问题,cookie和session都能解决。
使用localstorage
使用localStorage保存数据使用localStorage.setItem(key,value);
使用localStorage获取数据的时候使用的是localStorage.getItem(key);
- 使用localStorage设置定时处理缓存,过期重新登录
function setLoginInfo(key,value){
//var curTime = new Date().getTime();
localStorage.setItem(key,value);
}
//获取缓存,24小时重新登录
function getLoginInfo(key){
var data = localStorage.getItem(key);
if(data!=null){
var dataObj = JSON.parse(data);
if (new Date().getTime() - dataObj.time>24*60*60*1000) {
//session 已经失效了
localStorage.removeItem(key);
return "";
}else{
var dataObjDatatoJson = JSON.parse(dataObj.data)
return dataObjDatatoJson;
}
}else{
window.location.href="login.html";
}
}
使用cookie进行保存
//设置cookie
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
//取回cookie
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
- cookie的使用示例
//设置cookie,有效期为365天
setCookie('cellphone','13456780000',365);
//取回,若cookie失效,将返回空
getCookie('cellphone');
当杀死微信进程或者清理垃圾或者手机重启的时候,cookie缓存的信息依然存在,但是当微信通过设置退出重新登录的时候缓存就又没了。