AJ-Report项目分析(8)

 2021SC@SDUSC
 

目录

router导航守卫

afterEach 全局后置钩子


AJ-Report项目分析(7)中我们分析了登录相关的内容,其中分析了token的使用。本文将从token出发,分析每次请求,是如何通过token来验证是否需要登录的。

我们本次分析的是src/permisson.js文件源码

每次跳转页面的样式

import NProgress from 'nprogress'  
import 'nprogress/nprogress.css' 

这两行代码指定了每次跳转页面时的进度条样式。 就是浏览器上方的蓝色线条,如下:

 之后的源码:

var whiteList = ['/login', '/aj/**', '/bigscreen/viewer'] 
router.beforeEach((to, from, next) => {
  NProgress.start()
  var token = getToken();
  var gaeaUser = getAccessUser();
  // 如果有token
  if (token) {
    if (to.path == '/login') {
      next('/index')
      NProgress.done()
    }else{
      next()
    }
  }else {
    console.log(to.path)
    if (whiteList.includes(to.path)) {
      next()
    }else {  
      if ((token == null || token == '' || token ==undefined || gaeaUser == {}) && (to.meta != null && to.meta.requireAuth == true)) { 
        next(`/login?redirect=${to.path}`);  
        NProgress.done();
      } else {
        next();
      }
    }

  }
})

先是定义了一个whiteList数组,之后使用了router的beforeEach函数,这是router的导航守卫。

router导航守卫

导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。

在全局守卫里面,beforeEach 是全局前置守卫,当一个导航触发时,全局前置守卫按照创建顺序调用。

函数参数的含义如下:

1.“to”: 即将要进入的目标 路由对象; 

2. "from": 当前导航正要离开的路由对象;

3. “next”: Function: 确保要调用 next 方法,否则钩子就不会被 resolved。 

回到代码,首先调用了Nprocess的start方法,意思是每次跳转都要执行这个方法来显示上文所说的跳转特效。

接着使用了getToken()来获取token,这个方法我在AJ-Report项目分析(7)中已经分析过了。

接着:如果有token,会先判断即将进入的导航对象是否是登录界面,如果是的话就取消特效,并执行传入的next方法。

之后继续判断定义的whiteList数组中是否包含即将进入的到导航对象。这意味这whiteList数组中的三个path都是有“特权”的。

下面这段代码:

 if ((token == null || token == '' || token ==undefined || gaeaUser == {}) && (to.meta != null && to.meta.requireAuth == true)) { 
        next(`/login?redirect=${to.path}`);  

意味着还要判断是否在免登陆白名单,这是通过:

to.meta != null && to.meta.requireAuth == true

来判断的。如果没有在白名单并且没有token,则都跳转到登录界面。

afterEach 全局后置钩子

文件最后的源码如下:

router.afterEach(() => {
  NProgress.done()  
})

我们在前面分析了beforeEach方法,这里是afterEach方法,afterEach是全局后置钩子,和前置钩子区别在于这些钩子不会接受 next 函数也不会改变导航本身 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AJ-Report是一款常用的报表工具,具有轻量、易用和灵活定制的特点。在使用AJ-Report进行报表开发时,可以根据需要添加所需的组件,以满足报表设计的需求。下面将介绍AJ-Report添加组件的方法。 首先,打开AJ-Report的报表设计器界面,选择需要添加组件的报表,点击鼠标右键,在弹出的菜单中选择“添加控件”命令,系统会弹出可供添加的组件列表。 在组件列表中,可以选择需要添加的组件,例如文本框、表格、图表等,在选择完组件后,将其拖拽到报表的相应位置即可。在拖拽组件时,可以通过Ctrl键或Shift键多选或多拖拽组件。 添加组件后,还可以对其进行进一步的定制。在组件的属性面板中,可以设置组件的颜色、字体、排版等样式属性,也可以设置组件的数据源、数据筛选等数据属性。 此外,在AJ-Report中还可以通过自定义组件来扩展报表的功能。在报表设计器中,可以创建自定义控件,并通过代码进行定制和开发。自定义组件在展示数据或实现业务逻辑时,具有强大的灵活性和可扩展性。 总的来说,AJ-Report添加组件的方法很简单,在设计器中选择需要添加的组件,拖拽到相应位置即可。同时,AJ-Report还具有自定义组件功能,可以扩展报表的功能。通过添加组件和定制组件,可以让AJ-Report的报表工作更加灵活和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值