Appearance
登录跳转逻辑
版本说明
时间 | 修改人 | 备注 |
---|---|---|
2025-04-23 | YG | 初始化文档 |
说明
已经全局定义了跳转拦截器,无需在页面中处理,以下为处理思路。
处理方式
在进入页面前,页面跳转拦截器中添加判断是否需要前往登录页。nxhSDKLib.$init()
先初始化init信息。nxhSDKLib.$init().then()
中添加判断未绑定手机号且需要登录的页面强制跳转登录页。
javascript
// interceptor.js
import { nxhSDKLib } from "@/nxhsdk.module.min";
import { checkEnvironment, miniProgramNavigateTo, wrapUrl} from "./utils.js";
const judegeLogin = (toUrl) => {
return new Promise((resolve, reject) => {
nxhSDKLib.$init(() => {
console.warn('addInterceptor-$init');
}).then((res) => {
const notLoginPage = nxhSDKLib.storage.getStorage('not_login');
const isMobVl = nxhSDKLib.storage.getStorage('is_mob_vl');
const toPath = toUrl.split('?')[0];
// 未绑定手机号且需要登录的页面强制跳转登录页
if (!isMobVl && !notLoginPage.includes(toPath)) {
const url = `/login/xcx/index?appid=${nxhSDKLib.storage.getStorage('app_id')}`;
// 保存当前页面路径,登录成功后跳转回来
uni.setStorageSync('returnUrl', toPath.slice(1))
resolve(url);
} else {
resolve(toUrl)
}
}).catch((err) => {
reject(err)
})
})
}
//添加页面跳转拦截器 navigateTo、redirectTo、reLaunch
uni.addInterceptor('navigateTo', {
invoke(args) {
return new Promise((resolve, reject) => {
let url = wrapUrl(args.url || '');
let environment = checkEnvironment();
if (environment === 3) {
miniProgramNavigateTo('navigateTo', url).then(() => {
reject()
}).catch(() => {
args.url = url;
resolve(args)
})
} else {
judegeLogin(url).then((res) => {
args.url = res;
resolve(args)
}).catch((err) => {
reject()
})
}
})
}
})