微信小程序自動登錄邏輯分析與實(shí)現(xiàn),頁面黑白名單管理(上)
小程序沒有頁面黑白名單驗(yàn)證,進(jìn)入頁面需要登錄的,就加loginCheck,點(diǎn)擊頁面某個(gè)方法判斷未登錄狀態(tài)跳轉(zhuǎn)登錄的,調(diào)goLogin
// filter.js
const ajax = require('./ajax.js');
const app = getApp();
function loginCheck(pageObj) {
return new Promise(function (resolve, reject) {
// 檢查usertoken有沒有過期
let usertoken = wx.getStorageSync('usertoken');
ajax.dotnetRequest({
url: '/api/system/usertoken/檢查/' + usertoken,
success: function (res) {
if (res.statusCode === 200 && res.data.code === 0) {
if (res.data.data) {
// 沒有過期,正常執(zhí)行
resolve(true);
} else {
// 過期,保存當(dāng)前頁,跳轉(zhuǎn)登錄授權(quán)頁
resolve(false);
goLogin();
}
}
}
});
})
}
function goLogin(){
// 過期,保存當(dāng)前頁,跳轉(zhuǎn)登錄授權(quán)頁
wx.showToast({
title: '用戶未登錄',
duration: 2000,
icon: 'none'
})
let currentInstance = ajax.getCurrentPageUrlWithArgs();
wx.setStorage({
key: 'loginBeforeRoute',
data: ajax.getCurrentPageUrlWithArgs(),
success: function () {
wx.redirectTo({
url: '/pages/home/login/index/index'
})
}
})
}
module.exports = {
loginCheck: loginCheck,
goLogin: goLogin
}
1:loginCheck -- 檢查頁面是否登陸,用法示例:

loginCheck
如果onShow無后續(xù)操作,也可直接:

loginCheck
:2:goLogin -- 頁面未檢查登錄狀態(tài),但點(diǎn)擊接口,返回-2時(shí),用法示例:

goLogin