关于在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,

2、这里是比较适用于存在登录页面,而不是登录弹窗,如果需要,就需要单独去调整

以上为个人的知识总结,不足之处恳请各位大佬指点一二

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值