脚本宝典收集整理的这篇文章主要介绍了大龄业余程序员要搞个django小程序--09--小程序登陆状态维护之个人中心如何做数据加载,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在此之前,先明确F1a; 1、小程序初次载入时检查sessionKey和缓存中是否有userInfo,两个都满足时,将全局变量isLoginGlobal: bool 标记未true
2、小程序的登陆状态依靠全局变量isLOGinGlobal: bool 来确认登陆与否
3、其他页面加载时,要优先将isLoginGlobal写入载入data,为true时,再加载缓存中的uesrInfo
4、能加载到userInfo时(确保万无一失,加载某个页面时,再尝试读取一下userInfo的缓存),能加载进来则确认登陆状态,反之则不登陆。
附上代码:
App({
onLaunch() {
// 检查用户的登陆状态
this.checkLoginstatus()
},
checkLoginStatus() {
// 当sessionKey和userInfo同时存在时才能设置为登陆状态
let u = wx.getStorageSync('userInfo')
let s = checkSessionLogin()
s.then((res) => {
if (u) {
console.log('设置为登陆状态');
this.globalData.isLoginGlobal = true;
} else {
console.log('需要重新登陆');
this.globalData.isLoginGlobal = false;
}
}).catch(err => {
console.log('需要重新登陆');
this.globalData.isLoginGlobal = false;
})
},
globalData: {
// 全局设置,用来设置小程序的登陆状态,依赖sessionKey和userInfo
isLoginGlobal: false,
}
})
/*
* 1、使用wx.checkSession检查微信服务端的sessionKey是否过期 -> 过期则使用wx.login发请求,反之则保持小* 程序的登陆状态
* 2、使用wx.login发起请求
*/
export const checkSessionLogin = () => {
return new Promise((resolve, reject) => {
wx.checkSession({
success: (res) => {
resolve(res)
},
fail: (err) => {
reject(err)
},
complete: (res) => {},
})
})
}
这样判断来判断去,还使用全局变量来维护登陆状态会不会很麻烦,其实我也不清楚,不过感觉这样很稳妥,容错率高。
截图中,显性的数据有
以上几个数据都是显性的,即登陆后就要立刻显示的。那么这个页面数据的加载应这样设计。
一、登陆状态的判断
isLoginGlobal
,为true
时,继续读取本地缓存userInfo
userInfo
时,将isLogin = true
设置到本页面data
中,正式标记已登陆
isLoginGlobal
为false
或获取不到userInfo
的缓存,设置isLogin = false
,标记为未登陆二、未登陆时,不会展示任何数据,点击登陆
后
token
到缓存中userInfo
到缓存中isLoginGlobal = true
、标记本页data: isLogin = true
data
中三、如已登陆
在步骤一中,如果标记为登陆,那么应及时向开发者服务器发起请求,接收显性的数据并予以展示,通俗地说,都登陆了,最起码显性的数据得给人家看吧??
以上是脚本宝典为你收集整理的大龄业余程序员要搞个django小程序--09--小程序登陆状态维护之个人中心如何做数据加载全部内容,希望文章能够帮你解决大龄业余程序员要搞个django小程序--09--小程序登陆状态维护之个人中心如何做数据加载所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。