Crear un nuevo auth.js
/**
* @description función de almacenamiento de permisos
*/
constauthorizationKey = 'Autorización'función de exportación getAuthorization() { return uni.getStorageSync(authorizationKey) }
función de exportación setAuthorization(autorización) { return uni.setStorageSync(autorizaciónClave, autorización) }
función de exportación removeAuthorization(autorización) { return uni.removeStorageSync(authorizationKey) }
Nueva ruta.js
importar {getAuthorization} desde '@/utils/auth.js'
// Lista blanca
const whiteList = [
'/', // Tenga en cuenta que la página de entrada debe escribir directamente '/'
'/pages/Login/Login'
]export default async function() { const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab'] // Los métodos transversales son uni.navigateTo, uni.redirectTo, uni.reLaunch, uni. métodos de switchTab agregar interceptores list.forEach(item => { uni.addInterceptor(item, { invocar(e) { // Obtener la ruta de la página a ser redirigida (url después de eliminar los parámetros "?" y "?") const url = e.url.split('?')[0] consola.log('url', url)
// Determinar si la ventana actual es una lista blanca, si es así, no redirigir la ruta
dejar pasar
if (whiteList) { pass = whiteList.some((item) => { if (typeof (item) === 'object' && elemento.patrón) { devolver elemento.patrón.prueba(url) } devolver url === elemento }) }
// No incluido en la lista blanca ni token
if (!pass && !getAuthorization()) { uni.showToast({ title: 'Inicie sesión primero', icono: 'ninguno' }) uni.navigateTo({ url: "/pages/ Iniciar sesión /Login" }) return false } return e }, fail(err) { // error en la intercepción de devolución de llamada console.log(err) } }) }) }
APP.ver
import routingIntercept from '@/router/route.js'
export default {
onLaunch: function() {
console.log('App Launch');
// Interceptación unificada de rutas para realizar enrutamiento navegación guardia router.beforeEach function
routingIntercept()
} ,
onShow: función() {
consola.log('Aplicación Mostrar')
},
onHide: función() {
consola.log('Aplicación Ocultar')
}
}