123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- uni.addInterceptor('request', {
- invoke(args) {
- // request 触发前拼接 url
- const {
- data,
- method,
- } = args;
- if (method === "GET") {
- // 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
- const newData = qs.stringify(data, {
- arrayFormat: "repeat"
- })
- delete args.data;
- args.url = `${args.url}?${newData}`;
- }
- },
- success(args) {},
- fail(err) {},
- complete(res) {}
- })
- import config from "./config.js"
- export default function initApp() {
- /**
- * 页面跳转拦截器
- */
- let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
- list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
- uni.addInterceptor(item, {
- invoke(e) { // 调用前拦截
- //获取用户的token
- const token = uni.getStorageSync('uni_id_token'),
- //token是否已失效
- tokenExpired = uni.getStorageSync('uni_id_token_expired') < Date.now(),
- //获取要跳转的页面路径(url去掉"?"和"?"后的参数)
- url = e.url.split('?')[0];
- let notNeed = config.whiteList.includes(url)
- // 如果在whiteList里面就不需要登录
- if (notNeed) {
- return e
- } else {
- //需要登录
- if (token == '' || tokenExpired) {
- uni.showToast({
- title: '请先登录',
- icon: 'none'
- })
- uni.navigateTo({
- url: config.loginPage
- })
- return false
- }else{
- return e
- }
- }
-
- },
- fail(err) { // 失败回调拦截
- console.log(err);
- if (Debug) {
- console.log(err);
- uni.showModal({
- content: JSON.stringify(err),
- showCancel: false
- });
- }
- }
- })
- })
- //添加uniCloud云函数拦截器
-
- }
|