当前位置: 首页 > article >正文

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,


http://www.kler.cn/a/369332.html

相关文章:

  • MinIO方法封装
  • d3kheap
  • 在Spring Boot框架下的Java异常处理
  • LVGL移植教程(超详细)——基于GD32F303X系列MCU
  • 微信机器人自动回复了解下
  • 创新业态下金融头部机构在 FICC 平台建设上的思考与实践
  • 24下软考信息系统监理师,快背,都是精华知识点!
  • spring高手之路
  • react18中的受控与非受控组件及ref的使用
  • 配置 SSH 无需密码连接服务器及为 IP 指定自定义域名
  • arthas使用 笔记
  • 2025选题|基于Hadoop的物品租赁系统的设计与实现
  • windows 训练yolov8官方数据集
  • SpringBoot poi-tl通过模板占位符生成word文件
  • 奥哲与中建三局集团有限公司战略签约
  • 美畅物联丨视频上云网关如何配置上级联网云平台
  • nacos安装与配置
  • 存储引用服务(OSS)Minio 环境搭建
  • 最新版的 Git+VS Code同步版本管理实践
  • 运维面试汇总
  • [JAVAEE] 面试题(一) - 锁策略, synchronized的详细介绍
  • 标题点击可跳转网页
  • 【32】C++流
  • ETLCloud+Doris组合:数据集成,更简单更高效
  • Linux系统基础-进程间通信(5)_模拟实现命名管道和共享内存
  • 【ubuntu18.04】ubuntu18.04 编译LightGBM操作说明