登录拦截设置白名单

文章介绍了在Vue.js应用中如何实现登录拦截,通过permision.js文件设置路由守卫beforeEach和afterEach,检查用户token来决定是否允许访问特定页面,未登录用户会被重定向到登录页面。同时使用NProgress插件展示页面加载进度。
摘要由CSDN通过智能技术生成

需求:

登录拦截的时候我们一般会写一个permision.js放在main.js中,当页面每登录的时候会跳转到登录页面

代码如下:permision.js

// 权限拦截 导航守卫 路由守卫  router
import router from '@/router' // 引入路由实例
import store from '@/store' // 引入vuex store实例
import NProgress from 'nprogress' // 引入一份进度条插件
import 'nprogress/nprogress.css' // 引入进度条样式

const whiteList = ['/login', '/404'] // 定义白名单  所有不受权限控制的页面
// 路由的前置守卫
router.beforeEach(function(to, from, next) {
  NProgress.start() // 开启进度条
  //  首先判断有无token
  if (store.getters.token) {
    //   如果有token 继续判断是不是去登录页
    if (to.path === '/login') {
      //  表示去的是登录页
      next('/') // 跳到主页
    } else {
      next() // 直接放行
    }
  } else {
    // 如果没有token
    if (whiteList.indexOf(to.path) > -1) {
      // 如果找到了 表示在在名单里面
      next()
    } else {
      next('/login') // 跳到登录页
    }
  }
  NProgress.done() // 手动强制关闭一次  为了解决 手动切换地址时  进度条的不关闭的问题
})
// 后置守卫
router.afterEach(function() {
  NProgress.done() // 关闭进度条
})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 实现登录拦截白名单的方法有很多种,其中一种比较常见的方法是在路由配置中设置 meta 字段,用于标记该路由是否需要登录才能访问,然后在路由跳转时判断用户是否已登录,如果未登录则跳转到登录页面,如果已登录则判断该路由是否在白名单中,如果在则直接跳转,否则提示用户无权访问该页面。具体实现可以参考以下代码: ```javascript // 路由配置 const routes = [ { path: '/', name: 'Home', component: Home, meta: { requiresAuth: true } // 需要登录才能访问 }, { path: '/login', name: 'Login', component: Login }, { path: '/about', name: 'About', component: About, meta: { requiresAuth: true } // 需要登录才能访问 } ] // 路由跳转前的钩子函数 router.beforeEach((to, from, next) => { const isAuthenticated = localStorage.getItem('isAuthenticated') === 'true' if (to.matched.some(record => record.meta.requiresAuth)) { // 需要登录才能访问 if (isAuthenticated) { // 已登录 const whitelist = ['/login'] // 白名单 if (whitelist.includes(to.path)) { // 在白名单中 next('/') } else { next() } } else { // 未登录 next('/login') } } else { // 不需要登录即可访问 next() } }) ``` 以上代码中,我们在路由配置中设置了 meta.requiresAuth 字段,用于标记该路由是否需要登录才能访问。在路由跳转前的钩子函数中,我们判断用户是否已登录,如果未登录则跳转到登录页面,如果已登录则判断该路由是否在白名单中,如果在则直接跳转,否则提示用户无权访问该页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值