vue router权限

全局拦截 beforeEach(to, from,next)

  • to:router即将进入的路由对象
  • from:当前导航即将离开的路由
  • next:Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。
{
    path: '/login',
    meta: { title: '登录', isPublic: true },
    component: () => import('../components/Login.vue'),
  }
// 在meta上添加isPublic:true  全局拦截时校验否false或者不写时需要校验是否登录

router.beforeEach((to, from, next) => {
  //路由发生变化修改页面title
  if (to.meta.title) {
    document.title = to.meta.title
  }
  //全局拦截是否登录
  if (!to.meta.isPublic && !localStorage.token) {
    return next('/login')
  }
  next()
})

单个路由拦截 beforeEnter(to, from,next)

{
    path: '/release/miner',
    meta: { title: '发布矿机' },
    beforeEnter: function(to, from, next) {
      if (localStorage.miners_level < 1) {
        next(false)   //或者返回你需要的地址
        return alert('xxxxx')
      }
      next()
    },
    component: () => import('../views/ReleaseMiner.vue'),
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue RouterVue.js官方的路由管理插件,它可以帮助我们实现页面的跳转和管理。在实际开发中,我们经常需要根据用户权限来控制页面的访问,这时候就需要用到Vue Router权限管理功能。 Vue Router权限管理分为两种:全局守卫和路由守卫。 1. 全局守卫 全局守卫是在路由跳转之前对所有路由进行拦截的一种机制。在Vue Router中,我们可以通过beforeEach方法来实现全局守卫。beforeEach会在每次路由跳转之前被调用,我们可以在这个方法中判断用户的权限,如果用户没有权限访问该路由,则可以跳转到其他页面或者提示用户无权访问。 具体实现代码如下: ```javascript router.beforeEach((to, from, next) => { // 判断用户是否登录 if (!store.state.isLogin) { // 如果用户没有登录,则跳转到登录页 next('/login'); } else { // 如果用户已登录,则判断用户是否有权限访问该路由 if (to.meta.requiresAuth && !store.state.hasPermission) { // 如果用户无权限访问该路由,则跳转到其他页面或者提示用户无权访问 next('/'); } else { // 如果用户有权限访问该路由,则直接跳转到该路由 next(); } } }); ``` 在上面的代码中,我们首先判断用户是否登录,如果用户没有登录,则跳转到登录页。如果用户已登录,则判断用户是否有权限访问该路由。如果用户无权限访问该路由,则跳转到其他页面或者提示用户无权访问;如果用户有权限访问该路由,则直接跳转到该路由。 2. 路由守卫 路由守卫是对单个路由进行拦截的一种机制。在Vue Router中,我们可以通过设置meta字段来定义路由守卫。在路由跳转之前,我们可以通过beforeEnter方法来判断用户的权限,如果用户没有权限访问该路由,则可以跳转到其他页面或者提示用户无权访问。 具体实现代码如下: ```javascript const routes = [ { path: '/', component: Home, meta: { requiresAuth: true // 需要登录才能访问 } }, { path: '/about', component: About, meta: { requiresAuth: true, // 需要登录才能访问 requiresPermission: true // 需要特定权限才能访问 }, beforeEnter: (to, from, next) => { // 判断用户是否有特定权限 if (!store.state.hasPermission) { // 如果用户没有特定权限,则跳转到其他页面或者提示用户无权访问 next('/'); } else { // 如果用户有特定权限,则直接跳转到该路由 next(); } } }, { path: '/login', component: Login } ]; ``` 在上面的代码中,我们首先在路由的meta字段中设置了requiresAuth和requiresPermission属性。requiresAuth表示该路由需要登录才能访问,requiresPermission表示该路由需要特定权限才能访问。然后我们在路由的beforeEnter方法中判断用户是否有特定权限,如果用户没有特定权限,则跳转到其他页面或者提示用户无权访问;如果用户有特定权限,则直接跳转到该路由。 总结: Vue Router权限管理可以帮助我们根据用户的权限控制页面的访问。全局守卫和路由守卫是实现权限管理的两种机制,它们可以结合使用来实现更加复杂的权限控制逻辑。在实际开发中,我们需要根据具体的业务需求和安全要求来设计和实现权限管理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值