技能学习:学习使用Node.js + Vue.js,开发前端全栈网站-12-4.登陆的前端vue-router路由验证(导航守卫)

简介: 上篇文章我们发现有些不使用任何接口的页面,在不登陆状态下是可以进行访问的,所以本篇文章解决一下这个问题。

上篇文章我们发现有些不使用任何接口的页面,在不登陆状态下是可以进行访问的,所以本篇文章解决一下这个问题。

1.使用导航守卫

导航守卫是在路由定义之后,进行使用之前进行的相关函数操作。类似中间件,可以说实际上他就是一个钩子函数的中间件。
在这里插入图片描述

// 导航守卫
router.beforeEach((to, from, next) => {
  // 打印to,查看内容
  console.log(to)
  // 将导航守卫看作一个中间件,不执行next()无法进入页面
  next()
})

在这里插入图片描述
进入新建广告位页面,查看打印结果,可以查询到新建广告位功能的路由信息
在这里插入图片描述
所以我们要做的就是在路由中添加信息,根据我们添加的信息进行判断是否可以进行登录。

2.添加路由元信息

查询官方文档中,meta作为路由元信息被我们查询。通过配置meta字段来抓取登陆验证节点。
在这里插入图片描述
官方文档中的方法是想要哪个页面需要被路由限制,就对哪个页面添加路由元信息。而我们的admin端除了登录页面,都需要被路由限制,所以在登陆页面添加isPublic,意为只有login页面是公众访问页面,其他均为需登录的管理员页面。
在这里插入图片描述
测试,分别在新建广告位页面和登陆页面打印信息:
(1)新建广告位页面,数据没有变化:
在这里插入图片描述
(2)登录页面,可以看到我们定义的isPublic:
在这里插入图片描述

3.设置路由守卫函数
// 导航守卫
router.beforeEach((to, from, next) => {
  // 如果没有定义的isPublic和token值,则跳转到登录页
  if(!to.meta.isPublic && !sessionStorage.token){
    return next('/login')
  }
  // 否则进入该页面
  // 将导航守卫看作一个中间件,不执行next()无法进入页面
  next()
})

测试,进入新建广告位页面,此时直接输入链接已进不去了。
先登录再使用sessionStorage.clear(),刷新页面再测试,直接跳转到登陆页面。
完成。

4.总结

到此,admin端基本内容已经完善,后续有新东西继续补充。
下篇文章我们开启web端编辑,更加深入了解vue的组件和UI。

相关文章
|
9月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
434 1
|
9月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
434 1
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
784 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
434 5
|
JavaScript 前端开发
web前端JS高阶面试题(1),高级开发工程师面试
web前端JS高阶面试题(1),高级开发工程师面试
|
JSON JavaScript 前端开发
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
|
XML 前端开发 JavaScript
2022 前端JavaScript高频手写面试题大全,助你查漏补缺
2022 前端JavaScript高频手写面试题大全,助你查漏补缺
187 1
2022 前端JavaScript高频手写面试题大全,助你查漏补缺
|
存储 消息中间件 编解码
前端面试题——JS篇】
前端面试题——JS篇】
194 1