小程序项目停服维护判断+页面登录验证,判断登录权限,未登录跳登录去授权,登录跳过继续

小程序项目停服维护判断+页面登录验证,判断登录权限,未登录跳登录去授权,登录跳过继续

思路:每次进入页面的时候先发请求,判断是否处于停服维护状态,是则跳停服维护的页面,显示停服维护中,否则判断token信息是否存在,进而跳转不同页面

可以自己封装一个专门的js,取个名字叫routerFilter.js,名字随意

var https = 'https://xxxx.com';
var utils=require("./util.js");
function routerCheck(pageObj) {   // 停服判断
  if (pageObj.onShow) {
      let _onShow = pageObj.onShow;
      // 使用onLoad的话需要传递options
      pageObj.onShow = function () {
        wx.request({
          url:https+'/Weixin/Index/checkServer', 
          data:{},
          method:'POST',
          success: function(res){
            if(res.data.code == '20000'){
              if(!wx.getStorageSync('token')){//没有token信息,去换open_id
                // 登录
                wx.login({
                  success: res => {
                    let code = res.code
                    
                    console.log(res)
                    utils.ajax('/Weixin/Auth/getMinCode',{//请求后端返回token,
                      code:code
                    }).then(res=>{
                      if(res.data.code==20000){
                        
                        wx.setStorageSync('open_id', res.data.data.openid);
                        wx.setStorageSync('token', res.data.data.token);
                        wx.setStorageSync('session_key', res.data.data.session_key);
                        var token = wx.getStorageSync('token');
                        if(!token || token == ''){//如果没有token,说明是新用户,如果是去首页,因为首页未登录也可以看,所以就直接去首页,如果是去非首页,需要用户信息才能看的,则要去注册
                         
                          let currentInstance = getPageInstance();
                          if(currentInstance.route=='pages/index/index'){
                            _onShow.call(currentInstance);
                          }else{
                            wx.navigateTo({
                              url: "/pages/login/login"
                            });
                          }
                          
                          
                        }else{//有token,则直接往下进行,去它该去的页面
                          
                          // 获取当前页面
                          let currentInstance = getPageInstance();
                          _onShow.call(currentInstance);
                        }
                      }
                    })
                    // 发送 res.code 到后台换取 openId, sessionKey, unionId
                  }
                })
              }else{
                let currentInstance = getPageInstance();
                _onShow.call(currentInstance);
              }
              
            }else{//停服
              wx.redirectTo({
                url: "/packageA/pages/weihu/weihu"
              });
            }
          },
          fail: function(res){
            console.log(res)
          }
        })
        
      }
  }
  return pageObj;
}

// 获取当前页面    
function getPageInstance() {
  var pages = getCurrentPages();
  return pages[pages.length - 1];
}

exports.routerCheck = routerCheck;

在页面中使用

const filter = require('../../utils/routerFilter.js');
Page(filter.routerCheck({
data:{},
onLoad(){
},
onShow(){
}
...
})

关于小程序授权登录可参考另一篇小程序授权获取头像昵称登录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值