首页 > 其他分享 >RBAC导航守卫

RBAC导航守卫

时间:2023-11-10 09:00:10浏览次数:28  
标签:next RBAC 守卫 meta 跳转 导航 路由 页面

在写之前首先了解什么是导航守卫:

  Vue导航守卫是Vue Router提供的一种机制,用于在导航过程中对路由进行控制和管理。通过导航守卫,可以在路由跳转前、跳转后以及导航被确认时执行一些逻辑,比如进行权限验证、页面数据加载、页面跳转动画等操作。

   知道导航守卫之后就可以开始写代码了,代码如下:

    代码写在 router 下的 index.js下(代码后有详细讲解代码)

router.beforeEach((to, from, next) => {
  // canUserAccess() 返回 `true` 或 `false`
  // const canAccess = await canUserAccess(to)
  // if (!canAccess) return '/login'
  if (to.meta) {
    if (to.meta.UserAsses) {
      var userStr = window.localStorage.getItem(config.userToken);
      if (!userStr) {
        next({ path: '/UserLogin' })
      } else {
        next();
      }
    } else {
      next();
    }
  } else {
    next();
  }
})

 

 

这段代码是一个Vue Router的全局前置守卫(beforeEach)的实现。让我来解释一下这段代码的功能:

  1. 首先,代码使用了router.beforeEach来注册一个全局前置守卫,该守卫会在每次路由跳转前执行。

  2. 在守卫函数内部,通过to参数获取将要跳转的目标路由对象,通过from参数获取当前的路由对象,以及通过next函数来控制路由的跳转。

  3. 守卫函数中首先检查目标路由对象(to)是否包含meta字段,如果包含,则继续执行下一步判断。

  4. 如果目标路由对象的meta字段中包含UserAsses属性,它会读取本地存储中的用户信息(假设存储在config.userToken中),如果用户信息不存在(未登录),则通过next({ path: '/UserLogin' })将路由重定向到/UserLogin页面,表示需要用户登录后才能访问该页面。

  5. 如果目标路由对象的meta字段不包含UserAsses属性,则直接执行next(),表示无需进行用户登录验证,可以直接跳转到目标页面。

  6. 如果目标路由对象不包含meta字段,则同样执行next(),表示无需进行任何验证,可以直接跳转到目标页面。

总的来说,这段代码的作用是在每次路由跳转前,检查目标路由的meta字段是否包含UserAsses属性,如果包含则判断用户是否已登录,如果未登录则将用户重定向到登录页面;如果不包含UserAsses属性或者meta字段不存在,则直接进行路由跳转。这种方式可以实现对需要登录权限的页面进行统一的权限验证。

 

 到此这个是导航守卫的代码

标签:next,RBAC,守卫,meta,跳转,导航,路由,页面
From: https://www.cnblogs.com/gyp2001/p/17823331.html

相关文章

  • 【安卓13】谷歌原生桌面launcher3源码修改,修改桌面布局(首屏应用、小部件、导航栏、大
    前言近期接到一个关于谷歌EDLA认证的需求,我负责的是谷歌原生桌面布局的修改,通过研究源码,将涉及到了一些修改思路发出来,大家可以参考一下有没有对你有用的信息。主要修改内容有:1、搜索栏、底部导航栏未居中2、中部应用未按要求排布,详情请参考摹客3、在原生Google桌面未添加中......
  • vue2实现动态侧边导航栏
    router文件下index.js 来源http://blog.itpub.net/69978258/viewspace-2909200///index.tsimportVuefrom'vue';importVueRouterfrom'vue-router';importLoginfrom'@/views/login/index.vue';importLayoutfrom'@/layout/ind......
  • react菜单Menu导航栏实现
    react菜单Menu导航栏实现//定义选中的下标const[currentIndex,setCurrentIndex]=useState(initIndex)//选中样式改变(tailwind)constgetCurClass=(index)=>{returncurrentIndex==index?'hover:bg-blue-400bg-blue-400hover:text-gray-50flex......
  • bitsdojo_window自定义导航以及关闭按钮
    1、Windows里面的配置在应用程序文件夹中,转到windows\runner\main.cpp,并在文件开头添加以下两行:#include<bitsdojo_window_windows/bitsdojo_window_plugin.h>autobdw=bitsdojo_window_configure(BDW_CUSTOM_FRAME|BDW_HIDE_ON_STARTUP);2、macOS里面的配置1、在应用程......
  • 导航
    本博客用于记录运维开发工程师生涯所学技能,目的是形成知识库便于快速复习,构建知识体系。对应仓库shiya.liu/DevOpsToolChain-码云-开源中国(gitee.com)......
  • 利用路由守卫实现token过期后返回登录界面
    consttimeX=localStorage.getItem("time");//如果有时间戳存在会判断token是否过期if(timeX!==null){consttime=timeX.slice(1,-1)//获取了token的过期时间consttokenTime=newDate(time);constcurrentTimeUS=newDate();constcurrentTimeCN=newDate(cu......
  • Outlook导航栏如何回到下面
    10月的某一天打开Outlook突然导航条跑到了最左边本来是在下面的真讨厌解决方案如下如果你的导航栏位于Outlook窗口的左边距上,则你拥有此功能的新体验(当前频道版本2207或更高版本)。可以一段时间后移文件夹窗格下方的栏,如下所述,但最终导航栏将永久放置在左侧边距上。......
  • uniapp 动态修改顶部导航栏右侧按钮 titleNView(APP-PLUS、H5)
    1<script>2exportdefault{3onReady(){4//已渲染5varpages=getCurrentPages();6varpage=pages[pages.length-1];78//#ifdefH59document.querySelector('.uni-page-head-ft.uni-......
  • 成品直播源码推荐,去掉导航条和tabbar线条
    成品直播源码推荐,去掉导航条和tabbar线条去掉导航条底部线条 [self.navigationController.navigationBarsetBackgroundImage:[[UIImagealloc]init]forBarMetrics:UIBarMetricsDefault];  [self.navigationController.navigationBarsetShadowImage:[[UIImagealloc]i......
  • BDS/GNSS 卫星定位 SOC 芯片AT6558R 适用车载定位与导航
    芯片简介AT6558R是一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片,片上集成射频前端,数字基带处理器,32位的RISCCPU,电源管理功能。芯片支持多种卫星导航系统,包括中国的北斗卫星导航系统BDS,美国的GPS,俄罗斯的GLONASS,日本QZSS系统,并实现多系统联合定位。性能指标 主......