Vue项目前后端分离下的前端鉴权方案

本文介绍了在Vue项目中,采用异步加载路由的方式实现前端鉴权,包括路由鉴权、按钮权限控制和token自动更新。针对不同需求,如防止地址栏入侵、动态加载路由、精确到按钮的权限管理等,提供了具体的实现方案。同时,文中还讨论了同一浏览器登录账号限制的处理方法,通过全局路由守卫和请求拦截器确保了鉴权的有效性。
摘要由CSDN通过智能技术生成

Vue项目前后端分离下的前端鉴权方案

技术栈

前端Vue全家桶,后台.net。

需求分析

  1. 前端路由鉴权,屏蔽地址栏入侵
  2. 路由数据由后台管理,前端只按固定规则异步加载路由
  3. 权限控制精确到每一个按钮
  4. 自动更新token
  5. 同一个浏览器只能登录一个账号

前端方案

对于需求1、2、3,采用异步加载路由方案

  1. 首先编写vue全局路由守卫
  2. 排除登录路由和无需鉴权路由
  3. 登录后请求拉取用户菜单数据
  4. 在vuex里处理菜单和路由匹配数据
  5. 将在vuex里处理好的路由数据通过addRoutes异步推入路由
  router.beforeEach((to, from, next) => {
    // 判断当前用户是否已拉取权限菜单
    if (store.state.sidebar.userRouter.length === 0) {
      // 无菜单时拉取
      getMenuRouter()
        .then(res => {
          let _menu = res.data.Data.ColumnDataList || [];
          // if (res.data.Data.ColumnDataList.length > 0) {
          // 整理菜单&路由数据
          store.commit("setMenuRouter", _menu);
          // 推入权限路由列表
          router.addRoutes(store.state.sidebar.userRouter);
          next({...to, replace: true });
          // }
        })
        .catch(err => {
          // console.log(err);
          // Message.error("服务器连接失败");
        });
    } else {
      //当有用户权限的时候,说明所有可访问路由已生成 如访问没权限的菜单会自动进入404页面
      if (to.path == "/login") {
        next(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值