首页 > 其他分享 >前置__路由守卫

前置__路由守卫

时间:2023-02-26 14:24:00浏览次数:32  
标签:__ beforeEach import 前置 next 跳转 router 路由

 

介绍:

保护路由安全,主要使用于登录注册;只要没有登录就不可以看个人中心

示例:

把路由改为以下格式:

import Vue from "vue";
import Router from "vue-router";
import Home from "./views/Home.vue";
import aboutone from './views/Aboutone';
import abouttow from './views/Abouttow';
import aboutoneson from './views/Aboutoneson';

Vue.use(Router);

const router = Router({
    routes: [{
            // 页面开始就显示的路由
            path: "/",
            name: "home",
            component: Home,

        },
        {
            path: "/about",
            name: "about",
            component: () =>
                import("./views/About.vue"),
            children: [{
                    path: 'aboutone',
                    component: aboutone,
                    children:[
                        {
                        path: 'aboutoneson', 
                        component: aboutoneson,
                        }
                    ]
                },
                {
                    path: 'abouttow',
                    component: abouttow,
                },
            ]
        }
    ]
});
//在每一次;写成箭头函数的写法时这时发现页面跳转不了了 router.beforeEach(()=>{
  console.log('!!!');
})
//暴露router变量 export default router

beforeEach:指定一次路由每次切换时所调的函数

在每一次路由跳转之前进行调用,初始化时调用一次

 

beforeEach的三个参数:

第一个参数是:即将跳转的路由

第二个参数是:当前导航要离开的路由

第三个参数是:可以通行的路由

//beforeEach有三个参数 to,from,next
router.beforeEach((to,from,next)=>{
  console.log('!!!');
})

成功跳转

router.beforeEach((to,from,next)=>{
    console.log(to,from);
    //判断如果要进入路由名字为'xiaoxi'或名字为'abtow',
    if (to.name==='xiaoxi' || to.name === 'abtow') {
        // 如果本地存储的Nuber值为yang就跳转,反之弹出权限不够
        if (localStorage.getItem('Nuber') === 'yang') {
            next()
        } else{
            alert('权限不够')
        }
    } else{
        next()
    } 
})

 

 

 失败跳转

我把获取的值的名字故意改成了yeng
router.beforeEach((to,from,next)=>{
    console.log(to,from);
    //判断如果要进入路由名字为'xiaoxi'或名字为'abtow',
    if (to.name==='xiaoxi' || to.name === 'abtow') {
        // 如果本地存储的Nuber值为yang就跳转,反之弹出权限不够
        if (localStorage.getItem('Nuber') === 'yeng') {
            next()
        } else{
            alert('权限不够')
        }
    } else{
        next()
    } 
})

 

标签:__,beforeEach,import,前置,next,跳转,router,路由
From: https://www.cnblogs.com/0722tian/p/17156358.html

相关文章

  • 数据结构(借鉴408)-查找
    数据结构查找顺序查找折半查找树形查找:1.二叉排序树2.平衡二叉树3.红黑树B树及其基本操作、B+树的基本概念散列查找概念查找分类静态查找不改变查找表的......
  • 第十节:总结几种校验方式(Cookie、Session、JWT)
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblog......
  • JAVAWEB-NOTE04-JDBC
    目录简介快速入门API详解DriverManagerConnectionStatementResultSetResultSet案例PreparedStatemet演示SQL注入解决sql注入原理数据库连接池简介Druid数据库连接池使用步......
  • 「解题报告」ARC133D Range XOR
    不会做。考虑拆分成前缀和的形式。设\(w_i=1\oplus2\oplus\cdots\oplusi\),打表容易发现:\[w_i=\begin{cases}i&i\equiv0\pmod4\\1&i\equiv1\pmod......
  • C#/.net await/async
    在函数声明中,async关键字要放在返回类型之前async函数本身并不创建异步操作,只有在调用await的时候才会进行异步操作上下文关键字,想要异步调用一个async函数,自己也必须得......
  • 《复试项目》报错汇总【持续更新】
    我推荐大家的学习路线是,先把我的视频花1~2天的时间刷完,然后再考虑做不做项目,如果时间紧张,把我的代码看懂,然后多准备准备机器学习相关的知识。如果有时间的话,那就二刷我的视......
  • 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not fou
    org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口......
  • 搭PHP本地环境-windows
    项目中要用php开发,但是本地没环境调试不方便,所以搭一下本期环境。1.下载phpphpstudy工具官网:https://www.xp.cn/。phpstudy和WAMP工具的不同之处在于,phpstudy支持nginx服......
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown co
     这里最好写数据库的字段名,userName和username。mybatis是能区分的。但是create_time和createTime。mybatis会认为不一致,这种情况,要把表的真实列名create_time......
  • Java原生序列化与反序列化
    序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。为什么需要序列化?序列化分为两大部分:序列化和反......