微信小程序自动登录逻辑分析与实现, 页面黑白名单管理 (上)
小程序没有页面黑白名单验证, 进入页面需要登录的, 就加 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 -- 检查页面是否登陆, 用法示例:
loginCheck
如果 onShow 无后续操作, 也可直接:
loginCheck
:2:goLogin -- 页面未检查登录状态, 但点击接口, 返回 - 2 时, 用法示例:
goLogin
来源: http://www.jianshu.com/p/0f94f3b1be9b