Vue 权限控制的方法(路由验证)

路由元信息(meta)

如果一个网站有不同的角色,比如 管理员 和 普通用户 ,要求不同的角色能访问的页面是不一样的

这个时候我们就可以 把所有的页面都放在路由表里 ,只要 在访问的时候判断一下角色权限 。如果有权限就让访问,没有权限的话就拒绝访问,跳转到404页面

vue-router 在构建路由时提供了元信息 meta 配置接口,我们可以在元信息中添加路由对应的权限,然后在路由守卫中检查相关权限,控制其路由跳转。

可以在每一个路由的 meta 属性里,将能访问该路由的角色添加到 roles 里。用户每次登陆后,将用户的角色返回。然后在访问页面时,把路由的 meta 属性和用户的角色进行对比,如果用户的角色在路由的 roles 里,那就是能访问,如果不在就拒绝访问。

代码示例1:

路由信息:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

routes: [

  {

    path: '/login',

    name: 'login',

    meta: {

      roles: ['admin', 'user']

    },

    component: () => import('../components/Login.vue')

  },

  {

    path: 'home',

    name: 'home',

    meta: {

      roles: ['admin']

    },

    component: () => import('../views/Home.vue')

  },

]

 

页面控制:

?

1

2

3

4

5

6

7

8

9

10

11

//假设有两种角色:admin 和 user

//从后台获取的用户角色

const role = 'user'

//当进入一个页面是会触发导航守卫 router.beforeEach 事件

router.beforeEach((to,from,next)=>{

 if(to.meta.roles.includes(role)){

 next() //放行

 }esle{

 next({path:"/404"}) //跳到404页面

 }

})

posted @ 2020-06-23 17:34  孙同学你好  阅读(786)  评论(0编辑  收藏  举报