导航守卫beforeEach的运用

导航守卫beforeEach的运用beforeEach用于在路由跳转前要执行的方法。我在项目中用于全局main.js中,判断是否登录,如果登录就继续跳转,没有登录就去跳转页面constrouter=newVueRouter({…})router.beforeEach((to,from,next)=>{if(to.matched.some(record=>record.meta.req…

大家好,又见面了,我是你们的朋友全栈君。

前端常常需要实现的一个功能,比如一个商城,跳转到某些页面,如个人中心等就需要登录过才能进去,不然就先跳转到登录页面之后才能跳转到需要登录之后才能查看的页面,此功能就需要导航守卫来完成比较好。
我在项目中用于全局main.js中,判断是否登录,如果登录就继续跳转,没有登录就去跳转页面

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requireAuth)) {
// 路由元信息requireAuth:true则不做登录校验
 next();
} else {

get(BASE_URL + "login/index").then(res => { //此处接口是问后台是否登录过,这个可以前端自己通过sessionStorage实现或者通过vuex+sessionStorage实现,用一个变量保存是否登录过,或者有没有token判断等方式
   if (res.data.code === 200) {
       //成功
    next();
  } else {
     if (to.path == "/login" || to.path == "/") {
         //如果是登录页面路径,就直接next()
      next();
       } else {
        //不然就跳转到登录;
      next({
        path: "/login"
           //	          query: { redirect: to.fullPath } //这里是实现路径重定义,方便完成登录动作直接跳转到本页面
         });
       }
    }
  }).catch(err => {
    console.log(err, "err");
      next("/notFindPage");
 });
}
});

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于 等待中。
每个守卫方法接收三个参数:
to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的),继续跳转。

next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next(’/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。
可以通过路由远信息requireAuth:true指定某一个页面不验证

routes: [
    {
      path: '/', //这个表示的是根目录,即一进入的页面
      redirect: 'login', //设置页面一进来就显示的页面,即重定向到登录页
      meta:{
        requireAuth:true
      }
    },
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HTML的dpr

    HTML的dpr只是为了自己以后查找方便 看不懂勿怪 DPI PPI 屏幕像素密度或屏幕每英寸的像素数量 dips 手机尺寸或独立像素物理像素 手机分辨率 dpr nbsp window devicePixelR js 可以拿到 css 定义 psd 转换 rem 单位 rem px 基准值基准值 手机宽高 dpr 10 乘以 dpr 是因为页面有可能缩放除以 10 是为了取整

    2025年9月22日
    4
  • UFT录制

    UFT录制在惠普实训学习了UFT(UnifiedFunctionalTesting),是一种自动化测试工具,以VBScript为内嵌语言。打开UFT主界面,选择菜单file/new或file/open可以新建或打开UFT测试。在新建的测试界面打开action,使用HP自带的飞机订票系统软件,打开飞机订票系统,然后点击录制record,弹出窗口选择recordandruntesting,单击OK按钮

    2022年5月23日
    81
  • Java使文本框失去焦点的方法,使文本框text1获得焦点,js使文本框失去焦点

    Java使文本框失去焦点的方法,使文本框text1获得焦点,js使文本框失去焦点本文实例讲述了JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法。分享给大家供大家参考。具体如下:  html代码:  ?12345678…

    2022年6月20日
    25
  • 复制粘贴不到远程桌面_远程怎么复制粘贴不了

    复制粘贴不到远程桌面_远程怎么复制粘贴不了在远程服务器上打开任务管理器,在进程里面找到rdpclip进程(或者剪贴板监视器),点击“结束进程”打卡DOS命令符,输入rdpclip后,确认,从新打开远程剪贴服务。

    2022年8月19日
    6
  • dh参数建模_data vault 建模

    dh参数建模_data vault 建模仅供个人学习记录DH法一般用一次就丢,然后后面再需要用的时候就会忘,所以本文整理了DH建模法,方便需要使用的时候进行参考DH法可分成以下几步:辨认出关节和连杆确定Z轴确定每个坐标系的原点确定XY轴确定Toolframe写出DH参数表写出转换方程其中对于第二步情况也要分为两种旋转关节平动关节其中对于第四步情况分为三种:Zi与Zi-1不共面Zi与Zi-1平行…

    2025年11月23日
    3
  • linux 系统进行make menuconfig的时候出错

    linux 系统进行make menuconfig的时候出错错误信息:(ps:当前系统:Linuxlabpc4.13.0-36-generic#40~16.04.1-UbuntuSMPFriFeb1623:25:58UTC2018x86_64x86_64x86_64GNU/Linux)HOSTCCscripts/kconfig/mconf.oInfileincludedfromscripts/kc…

    2022年5月25日
    34

发表回复

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

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