Vue 路由守卫

Vue 路由守卫文章目录路由前置 路由守卫全局后置 路由守卫独享路由守卫组件内路由守卫 1 路由作用 对路由进行权限控制 2 路由分类 全局守卫 独享守卫 组件内守卫路由前置 路由守卫现在的需求是访问 News 和 Message 时验证 localstorage 如果 school 的值是三里屯小学才能正常访问 否则提示没有权限 现在增加 localstorage 现在就能正常访问了修改 index js 给每个路由增加 name 属性 然后增加前置路由守卫 创建一个路由器 con

路由前置-路由守卫

...... //创建一个路由器 const router = new VueRouter({ 
    routes: [ { 
    name: 'guanyu', path: '/about', component: About }, { 
    name: 'zhuye', path: '/home', component: Home, children: [ { 
    path: 'news', component: News }, { 
    name: 'xiaoxi', path: 'message', component: Message, children: [ { 
    name: 'xiangqing', path: 'detail', component: Detail, props({ 
    query: { 
    id, title}}) { 
    return { 
   id, title} } } ] } ] }, ] }) //全局前置路由守卫 //初始化的时候调用、每次切换之前调用 router.beforeEach((to, from, next) => { 
    console.log(to, from); if (to.path === '/home/news' || to.name ==='xiaoxi') { 
    if (localStorage.getItem("school") === "三里屯小学") { 
    next() }else { 
    alert("无权限") } }else{ 
    next() } }) export default router; 

可以看到我们在前置路由守卫中判断了当路径是 news 或 name =‘xiaoxi’ 时进行权限的校验,如果判断条件太多,这个 if 语句就会很繁琐,我们可以在配置路由信息时使用 meta

...... const router = new VueRouter({ 
    routes: [ { 
   ......}, { 
    ...... children: [ { 
    path: 'news', ...... meta:{ 
    isAuth:true } }, { 
    name: 'xiaoxi', ...... meta:{ 
    isAuth:true }, children: [......] } ] }, ] }) //全局前置路由守卫 //初始化的时候调用、每次切换之前调用 router.beforeEach((to, from, next) => { 
    if (to.meta.isAuth) { 
    ...... }else{ 
    ...... } }) export default router; 

全局后置-路由守卫

 const router = new VueRouter({ 
    routes: [ { 
    name: 'guanyu', ...... meta: { 
   title: '关于'} }, { 
    name: 'zhuye', ...... meta: { 
   title: '主页'}, children: [ { 
    path: 'news', component: News, meta: { 
    isAuth: true, title: '新闻' } }, { 
    name: 'xiaoxi', path: 'message', component: Message, meta: { 
    isAuth: true, title: '消息' }, children: [ { 
    name: 'xiangqing', path: 'detail', component: Detail, meta: { 
    title: '详情' }, ...... } ] } ] }, ] }) ...... //全局后置路由 //初始化的时候被调用、每次路由切换之后被调用 router.afterEach((to, from) => { 
    console.log(to, from); document.title = to.meta.title || "" }) export default router; 

独享路由守卫

独享路由守卫即给路由单独设置的路由守卫,使用 beforeEnter,例如我们单独给消息设置一下当 localstorage 中 school 为三里屯小学时才能查看,否则就提示,功能和之前写的一样

{ 
    name: 'xiaoxi', path: 'message', component: Message, meta: { 
    isAuth: true, title: '消息' }, beforeEnter: ((to, from, next) => { 
    if (to.meta.isAuth) { 
    if (localStorage.getItem("school") === "三里屯小学") { 
    next() } else { 
    alert("无权限") } } else { 
    next() } } ), children: [] } 

组件内路由守卫

给组件内单独设置路由守卫,例如修改 About

<template> <h2>我是About的内容</h2> </template> <script> export default { 
    name: "About", //通过路由规则,进入该组件时被调用 beforeRouteEnter(to,from,next){ 
    console.log("About beforeRouteEnter",to,from); //一些组件内特有的 }, //通过路由规则,离开该组件时被调用 beforeRouteLeave(to,from,next){ 
    console.log("About beforeRouteLeave",to,from); //一些组件内特有的 next() } } </script> 

路由器的两种工作模式

执行npm run build进行打包,目录下会生成一个 dist 文件夹,部署到线上
在这里插入图片描述
修改路由的工作模式,修改 mode,值为historyhash
在这里插入图片描述
这里不做过多讲解,可以修改看下路径的区别,或用 express 部署一个本地的服务器把代码部署一下看看效果








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204977.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:05
下一篇 2026年3月19日 下午7:06


相关推荐

  • mysql c preparestatement「建议收藏」

    mysql c preparestatement「建议收藏」今天折腾了一个mysql的c的insert语句,与java访问oracle类似,mysql也支持这种preparestatement,使用这种语句的好处有很多,在oracle之中,这种方式在后台是sql是进行软解析,而直接拼凑insert的sql语句,则是叫硬解析,即每一个数据库都要重新分析一个sql的语法,对于大量的数据插入的情况,最好使用preparestatement,第2个好处是,如果直接

    2022年5月16日
    34
  • PyCharm删除文件时

    PyCharm删除文件时1 Safedelete withusagesea 字面意思是使用搜索安全删除 没有选中状态 直接删除 选中状态 删除前会搜索项目中是否有使用到这个文件的其它文件 如果有相关文件会提醒有几处被使用 并且列出以下三个按钮 DeleteAnyway 确认删除 Viewusages 查看哪里被使用 Cancel 取消删除 2 Searchincomm

    2026年3月16日
    1
  • file指定路径_目标实现的策略与路径

    file指定路径_目标实现的策略与路径FileProvider路径配置策略的理解★FileProvider的使用在AndroidManifest.xml中&amp;lt;providerandroid:name=&quot;android.support.v4.content.FileProvider&quot;android:authorities=&quot;set_your……

    2025年7月30日
    6
  • BI报表工具:IT人的必备工具!

    BI报表工具:IT人的必备工具!不晓得大家有没有发现 过去企业搞 IT 都强调上系统 搞流程 而近几年 IT 相关的新闻 会议 都围绕数据 确实 现在任何一个稍具规模的公司 都在强调数据的重要性 无论是否与 IT 行业有关 数据都是其必不可少的组成部分 各种各样的数据均需要数据库来承载与维护 无论是大型的数据仓库 如 DB 还是流行的 Oracle MySQL Sybase 等 所以一个好的 DBA 的作用显得极为重要 不仅需要能够进行日常维

    2026年3月19日
    3
  • haystack全文检索

    haystack全文检索Haystack1 什么是 HaystackHays 是 django 的开源全文搜索框架 全文检索不同于特定字段的模糊查询 使用全文检索的效率更高 该框架支持 Solr Elasticsearc Whoosh Xapian 搜索引擎它是一个可插拔的后端 很像 Django 的数据库层 所以几乎你所有写的代码都可以在不同搜索引擎之间便捷切换全文检索不同于特定字段的模糊查询 使用全文检

    2026年3月20日
    2
  • childNodes和nodeType

    childNodes和nodeTypechildNodes 和 nodeType

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号