vue vue-router实现路由拦截功能

2023-11-02

vue vue-router实现路由拦截功能

1、目录结构

在这里插入图片描述

2、设置路由拦截、

路由配置如下,在这里自定义了一个对象的参数meta: {authRequired: true}来标记哪些路由是需要登录验证的,导航被触发的时候只要判断是否目标路由中是否有meta这个对象,且meta包含authRequired属性,其值为true。这里访问带有meta对象的路由是被拦截的。
 {
        path: '/config',
        name: 'config',
        meta: { 
          requireAuth: true

         },
        component: Config
      },
      {
        path: '/about1',
        name: 'about1',
        meta: { 
          requireAuth: true

         },
        component: About1
      },
      {
        path: '/app',
        name: 'app',
        component: App
      },
      {
        path: '/application',
        name: 'application',
        meta: { 
          requireAuth: true

         },
        component: Application
      },

3、全局函数beforeEach

main.js通过router.beforeEach全局函数,每次路由跳转都会出发函数判断是否有登录信息

router.beforeEach((to, from, next) => {
  if (to.matched.some(res => res.meta.requireAuth)) { // 验证是否需要登陆
    var id=window.sessionStorage.getItem('userId');
    console.log(id)
    if (id) { // 查询本地存储信息是否已经登陆
      next();
    } else {
      next({
        path: '/login', // 未登录则跳转至login页面
        redirect:  '/main2' // 登陆成功后回到当前页面,这里传值给login页面,to.fullPath为当前点击的页面
        });
    }
  } else {
    next();
  }
}

4、在登陆界面利用sessionStorage将信息存入到全局变量

  login() {

                axios.get('http://192.168.56.1:8081/sel/1', {// /gr/goods/add
                    userid: this.loginForm.userid,
                    pwd: this.loginForm.pwd,
                    
                }).then((res) => {
                    
                    console.log(res);
                    console.log(res.data.msg);
                    this.$store.commit('setUserId',this.loginForm.userid);
                    this.$store.commit('setUserPwd',this.loginForm.pwd);
                    console.log(this.loginForm.userid);
                    console.log(this.loginForm.userpwd);
                    console.log("打印的id为:"+sessionStorage.getItem('userId'));
                    console.log("打印的pwd为:"+sessionStorage.getItem('userPwd'));

注意:

之后每次进行路由的时候都会判断登录信息,在注销的时候调用函数,;利用sessionStroage.clear()将全局信息清楚。防止注销之后路由拦截失效

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue vue-router实现路由拦截功能 的相关文章

  • 在jsDom中设置窗口宽度?

    应该是一个简单的问题 如何设置 jsDom 对象的宽度 jsdom env url http testdatalocation scripts http code jquery com jquery js done function err
  • 有一种方法可以在 MongoDB 中强制引用完整性 [重复]

    这个问题在这里已经有答案了 当您搜索与 Mongo DB 相关的引用完整性时 标准响应是 MongoDB 不支持此 标准解释是 MongoDB 支持 refs 和 populate 但是没有什么可以阻止您将 ref 更改为无效值 对于许多具
  • 错误 C2039: 'IsNearDeath': 不是 'Nan::Persistent> 的成员

    我最近升级了我的nodejs to v12 3 1 现在当我尝试跑步时npm install在我的项目存储库中 我收到上述错误 error C2059 syntax error compiling source file src custo
  • 同时节点以状态 1 退出。这会停止 Teamcity,导致其认为测试失败

    我正在尝试同时运行两个脚本concurrently 基本命令如下所示 concurrently k success first node tools mock webapi mock webapi js npm run test singl
  • 最小工作聚合物示例

    我一直在尝试使用 Polymer 获得一个极其简单的网页 以便在浏览器中简单地呈现 我在服务器端使用 Node ExpressJS Jade 设置 我的代码与 Polymer 文档附带的示例非常接近 我认为我缺少一些非常简单的东西 我正在使
  • NestJS:使用 JWT 将验证选项添加到 AuthGuard

    我正在尝试利用AuthGuard装饰器和护照 JWT 策略 遵循文档 https docs nestjs com techniques authentication 文档中的所有内容都运行良好 但我现在想保护 JWT 中包含的范围的路由 这
  • NodeJS 中的 uglify-js“找不到模块”

    在这里我正在创建应用程序来压缩 javascript 文件 我所做的步骤 在我的本地机器上安装了nodeJS 检查节点和 npm 正在工作 通过 npm install uglify js g 安装 uglify js 并安装 当我尝试在命
  • 在 Node js 应用程序中加载backbone.js

    我正在使用node js 和backbone 来构建网络应用程序 Backbone 是我的软件包要求的一部分 我之前使用过 Rails 和 Backbone 辅助 gem 非常适合将需要到达客户端的所有资产 js 文件 拼凑在一起 话虽如此
  • Electron 包 - 如何写入/读取文件

    我有文件test txt在我的应用程序根目录中 当我使用命令运行我的应用程序时npm start 我可以毫无问题地写入我的文件 但是当我使用电子打包器制作包时 不再可能将文本写入我的文件 我收到错误 Error EACCES permiss
  • Amazon S3 EPIPE 错误

    UPDATE 让它工作从命令行 http www timkay com aws 向该用户添加完全访问策略权限后 现在 当我使用 Node 执行此操作时 没有错误 但我在 s3 文件管理器中看不到这些文件 我在使用 Amazon 的 S3 服
  • 如何在 Node.js 中使用 Winston 将日志存储到 mysql 数据库

    我正在使用 winston 为我的应用程序进行日志记录 我已经使用这个完成了文件传输 class LoggerHelper extends BaseHelper constructor cApp super cApp this props
  • 切换活动链接 Bootstrap 导航栏

    我读过很多关于这个主题的帖子 发现几乎总是相同的解决方案 但它对我不起作用 我的问题如下 我想使用 Twitter Bootstrap 2 3 2 及其导航栏 因此我包含了 css 和 js 文件 在此之前 我还包括 jquery 然后我举
  • 节点对特定浮点数字的总和给出奇怪的输出

    我在玩 Node REPL 时遇到了这种奇怪的行为 4 32 4 78 应该只是 9 1 gt 4 32 4 78 9 100000000000001 另一种是 gt 7 3 1 08 8 379999999999999 对于其他数字 它工
  • 使用 mocha/chai 确保 REST API 提供文件?

    我想验证对 REST API 端点之一的调用是否正在提供文件 但我不确定如何进行操作 并且我没有看到任何相关示例 我确实看过文档 http chaijs com api bdd 但这对我没有多大帮助 服务器端代码本质上是 在 Express
  • 如何将 nartc/automapper 中的配置文件使用到 Nestjs 应用程序中

    我正在尝试在 NestJS 项目内的 nartc automapper lib 中使用 AutoMapper for nodejs 但是在尝试使用配置文件功能时遇到了麻烦 这是我的配置 应用程序模块 Module imports Autom
  • 电子无声打印

    我目前正在构建一个电子应用程序 我的本地文件系统上有一个 PDF 我需要以静默方式打印出来 在默认打印机上 我遇到了节点打印机库 但它似乎对我不起作用 有没有一个简单的解决方案可以实现这一目标 首先 几乎不可能理解 无声 打印的含义 因为一
  • 在节点环境中存根 jQuery.ajax (jQuery 2.x)

    我正在尝试运行一些需要存根的测试jQuery ajax 我正在使用 SinonJS 来做到这一点 它曾经与旧版本的 jQuery 1 x 一起工作得很好 var require jquery var sinon require sinon
  • Express.js 中的自定义回调 get

    我的 app js 中有一个 get app get api personnel api personnel 调用此函数作为回调以从 mongo 加载一些数据 exports personnel function req res var d
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • 使用express.js动态加载路线

    我使用express js作为网络服务器 并且想要一种简单的方法来将所有 app get 和 app post 函数分开以分隔文件 例如 如果我想为登录页面指定 get 和 post 函数 我希望在动态加载的路由文件夹中有一个 login

随机推荐

  • python 中,sklearn包下的f1_score、precision、recall使用方法,Accuracy、Precision、Recall和F1-score公式,TP、FP、TN、FN的概念

    目录 1 sklearn metrics f1 score 2 sklearn metrics precision score 3 sklearn metrics recall score 4 Accuracy Precision Reca
  • 设计和实现军用级系统的安全启动(Designing and implementing secure boot for military-grade systems)

    前言 原文链接 1 https militaryembedded com cyber cybersecurity designing and implementing secure boot for military grade syste
  • Multisim14安装教程(下载链接在文末)

    目录 安装流程 1 选择下载的安装包 解压 2 双击运行EXE安装程序 3 点击确定 4 点击Unzip 5 点击确定 6 点击Install Ni Circuit Design Suite 14 0 7 填写任意信息 点击Next 8 点
  • 小程序的 css 中使用线性渐变色的 border 有坑

    坑 IOS 系统模拟查看 后 不显示甚至混乱 IOS 不支持线性渐变色的border 而且设置渐变边框后无法加圆角 解决 div 使用背景色渐变 可用一个有宽高的 空 div 模拟一个边框线条 去替代 border 实现渐变 并且可以加圆角
  • go get更换国内镜像源

    在VSCode配置golang开发环境时 我们一般使用golang提供的go插件 而这个插件会使用go get命令去从golang org下载对应的包 因为众所周知的原因 这个过程经常会失败 因此必须要为go get更换国内镜像源 由于历史
  • 前端数字显示汉字(字典)

    第一种IF
  • qt delete使用

    在C 中学习过程中 我们都知道 delete 和 new 必须 配对使用 一 一对应 delete少了 则内存泄露 多了麻烦更大 Qt作为C 的库 显然是不会违背C 的前述原则的 可是 在Qt中 我们很多时候都疯狂地用new 却很少用del
  • C语言杨辉三角

    前言 杨辉三角 是二项式系数在三角形中的一种几何排列 在欧洲 这个表叫做帕斯卡三角形 帕斯卡 1623 1662 是在1654年发现这一规律的 比杨辉要迟393年 比贾宪迟600年 杨辉三角是中国古代数学的杰出研究成果之一 它把二项式系数图
  • 05 python 简单猜拳;循环while

    随机数 random 导入randonm库 randint产生一个范围的随机数 import random player int input 输出0 拳 1 剪 2 布 com player random randint 0 2 if pl
  • 使用jspdf生成pdf时,html2canvas循环浏览器卡顿或卡死解决方案:关于这个问题,我的解决方案是不要用html2canvas

    循环卡死当然是有原因的 首先jspdf对canvas也是有最大长度限制的 太长了就转不了 最后还是用wkhtmltopdf这个组件 先将页面上的canvas都转成图片 然后再循环将html字符串传到后台使用wkhtmltopdf这个组件生成
  • linux文件系统命令(6)---touch和mkdir

    一 目的 本文将介绍linux下新建文件或文件夹 删除文件或文件夹命令 touch能够新建文件 mkdir用来新建文件夹 rm用来删除文件或文件夹 本文将选取ubuntu14 04发行版做为描写叙述基础 二 touch命令 linux下新建
  • 关于Python爬虫接单的方法经验分享,实现经济独立

    在现如今这个数据发展的时代中 我想很多人工基本工资只能说是维持自己基本的生活开销的 要是说想要自己家里人生活过得好一些的话 我想很多人是很难这样做到的 我想把我的一些接单经验分享给大家 毕竟来说现在大家的生活都不容易 大家能帮些是一些 能赚
  • vue页面内监听路由变化

    beforeRouteEnter to from next 在渲染该组件的对应路由被 confirm 前调用 不 能 获取组件实例 this 因为当钩子执行前 组件实例还没被创建 beforeRouteUpdate to from next
  • 【ARM】简单移植adb与adbd过程记录

    1 问题 遇到一个比较苛刻的客户 测试程序adb push到开发板时间格式不一样 这都要算软件bug 没办法 只能想办法解决 后续在其他平台验证不会出现时间格式不一致的问题 所以把目标锁定在adbd版本的问题 于是打算重新移植个最新版本的a
  • 【OLED驱动函数详解】

    OLED驱动函数详解 前提 通讯方式 地址排列 寻址方式 正文 初始化 一些使用命令的函数 显示一个字符 在指定位置显示一个字符串 字符串居左显示 字符串居右显示 字符串居中显示 在指定位置显示一个中文字符 在指定区域显示图片 在指定位置显
  • 什么是无线路由器网络协议?

    上一篇我们介绍了什么是网络协议转换器 相信看过的朋友对此都有了一定的认知 可能有些朋友在使用协议转换器的时候用的是无线路由器网络 那么 什么是无线路由器网络协议呢 接下来飞畅科技的小编就来为大家详细介绍下无线路由器网络协议是什么 感兴趣的朋
  • ajax下载文件无响应,xml格式解析不正确

    今天朋友在做文件下载时遇到了一个问题 整个请求后台没有报一点错 而且请求也进入了响应Controller 但是页面就是没有任何响应 让我帮看下文件下载代码是否有问题 所有下载文件代码看了一遍确实没发现任何问题 我百思不得其解 突然想到会不会
  • CentOS7.x 安装RabbitMQ后-自定义配置文件

    承接CentOS7 x 安装RabbitMQ 3 7 x 背景 启动rabbitmq 然后登陆后 可以看到刚刚安装完成的rabbitmq使用的是默认的配置 还没有自定义的配置文件 1 配置文件位置 利用下面的命令查询rabbitmq配置文件
  • SaltStack常用模块

    SaltStack常用模块 SaltStack模块介绍 Module是日常使用SaltStack接触最多的一个组件 其用于管理对象操作 这也是SaltStack通过Push的方式进行管理的入口 比如我们日常简单的执行命令 查看包安装情况 查
  • vue vue-router实现路由拦截功能

    vue vue router实现路由拦截功能 1 目录结构 2 设置路由拦截 路由配置如下 在这里自定义了一个对象的参数meta authRequired true 来标记哪些路由是需要登录验证的 导航被触发的时候只要判断是否目标路由中是否