uni-app ルート インターセプト

新しい auth.js を作成する

/**
 * @description パーミッション格納関数
 */
const authorizationKey = 'Authorization'

export function getAuthorization() {   return uni.getStorageSync(authorizationKey) }

export function setAuthorization(authorization) {   return uni.setStorageSync(authorizationKey, authorization) }

export function removeAuthorization(authorization) {   return uni.removeStorageSync(authorizationKey) }

新しい route.js

「@/utils/auth.js」から{getAuthorization}をインポートします

// ホワイト リスト
const whiteList = [
  '/', // エントリ ページには '/'
  '/pages/Login/Login'を直接記述する必要があることに注意してください
]

export default async function() {   const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']   // トラバーサル メソッドは uni.navigateTo, uni.redirectTo, uni.reLaunch, uni. 4 つのルーティングswitchTab のメソッド add インターセプター   list.forEach(item => {     uni.addInterceptor(item, {       invoke(e) {         // リダイレクトするページのパスを取得 ("?" と "?" パラメータを削除した後の URL))         const url = e.url.split('?')[0]         console.log('url', url)







        // 現在のウィンドウがホワイトリストかどうかを判断し、そうであればルートをリダイレクトしない
        let pass
        if (whiteList) {           pass = whiteList.some((item) => {             if (typeof (item) === 'object' && item. pattern) {               return item. pattern. test(url)             }             return url === item           })         }






        // ホワイトリストに登録されておらず、トークンもありません
        if (!pass && !getAuthorization()) {           uni.showToast({             title: 'Please login first',             icon: 'none'           })           uni.navigateTo({             url: "/pages/ Login /Login"           })           return false         }         return e       },       fail(err) { // 失敗コールバック インターセプト         console.log(err)       }     })   }) }
















アプリビュー

import routingIntercept from '@/router/route.js'
    export default {
        onLaunch: function() {
            console.log('App Launch');
            // ルーティング ナビゲーション ガードを実現するルートの統合インターセプト router.beforeEach function
            routingIntercept()
        } ,
        onShow: function() {
            console.log('App Show')
        },
        onHide: function() {
            console.log('App Hide')
        }
    }

おすすめ

転載: blog.csdn.net/qq_38687592/article/details/129299566