欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > uniapp路由权限拦截守卫

uniapp路由权限拦截守卫

2024/10/27 0:37:25 来源:https://blog.csdn.net/lizixuan2001/article/details/143140266  浏览:    关键词:uniapp路由权限拦截守卫

uniapp中没有向vue中router的路由管理插件,官方提供uni.addInterceptor这个API去控制,这个方法可在进入到页面之前就拦截相应的跳转,就不存在在需登录页面加载展示之后再跳转到登录页面,操作如下

1、在uitls的文件夹下,新建permission.js文件

// 页面白名单,这里放的是不需要登录的页面
const whiteList=['/pages/home/index','/pages/login/index',
]
const loginPage="/pages/login/index";
export default function initPermission(){const routeFnList=["navigateTo","redirectTo","reLaunch","switchTab"]routeFnList.forEach(item=>{uni.addInterceptor(item,{invoke(e){//这里判断用户有没有登录,如果项目较大,可使用store状态去判断,依个人情况const token=uni.getStorageSync("token");const url=e.url.split("?")[0];let notNeed=whiteList.includes(url)		if(notNeed){return e}else{if(!token){uni.showToast({title:"请登录",icon:"none"})uni.navigateTo({url:loginPage})return false}else{return e}}},success(res){},fail(err){}	})		})}

2、在App.vue的文件中,引入permission.js文件并执行

<!-- App.vue -->
<template></template>
<script>
import initPermission from "@/utils/permission.js"export default {onLaunch:async function() {//这里调用此函数就行initPermission()},methods:{}onHide: function() {}}
</script><style lang="scss">
</style>

3、注意事项

1、如果咱们用的自带的底部tabbar,tababr的跳转该拦截器是无法拦截,需要使用自定的底部tabbar,

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com