1. 微信小程序 全局路由拦截

// utils/filter.js
function loginCheck(pageObj) {
  if (pageObj.onLoad) {
      let _onLoad = pageObj.onLoad;
      // 使用onLoad的话需要传递options
      pageObj.onLoad = function (options) {
          if(wx.getStorageSync('userinfo')) {
              // 获取当前页面
              let currentInstance = getPageInstance();
              _onLoad.call(currentInstance, options);

          } else {
              //跳转到登录页
              wx.redirectTo({
                  url: "/pages/login/index"
              });
          }
      }
  }
  return pageObj;
}

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

exports.loginCheck = loginCheck;

2. 在需要使用的页面 中使用就行了

/
const filter = require('../../utils/filter');
Page(filter.loginCheck({
    // ...
    onLoad: function (options) {
       // ...
    },
    // ...
}));
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐