微信小程序自动登录逻辑分析与实现,页面黑白名单管理(上)
小程序没有页面黑白名单验证,进入页面需要登录的,就加loginCheck,点击页面某个方法判断未登录状态跳转登录的,调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) {
// 没有过期,正常执行
resolve(true);
} else {
// 过期,保存当前页,跳转登录授权页
resolve(false);
goLogin();
}
}
}
});
})
}
function goLogin(){
// 过期,保存当前页,跳转登录授权页
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 -- 检查页面是否登陆,用法示例:
如果onShow无后续操作,也可直接:
:2:goLogin -- 页面未检查登录状态,但点击接口,返回-2时,用法示例: