antd-pro v2 关于前端配置权限相关

因为项目需求将权限的判断防止前台,而antd-pro最近刚改了权限相关的配置,这里再次进行一个简单实现讲解。
功能:通过登陆用户的权限,展示特定的侧边栏内容,并且通过url直接访问非权限页面时候抛出403;另外存在跳出BasicLayout的功能。

  • config/router.config.js
// 新增页面a,design tool, 跳转的页面必须写在之前,否则即便权限正确也会提示403,因时间关系,未详细查询原因
{
  path: '/design/tools', 
  name: '设计工具页面', 
  authority: 'design',                // 设置访问本页面的权限
  Routes: ['src/pages/Authorized'],               // 调用权限检查工具
  component: './design/designTools',
},

// 新增页面b,
{
  path: '/design/tools', 
  name: '设计工具页面', 
  authority: ['design', 'admin']                // 设置访问本页面的权限
  Routes: ['src/pages/Authorized'],               // 调用权限检查工具
  component: './layouts/NormalLayout',
  routes:[{
        { path: '/furnitures', redirect: '/furnitures/list' },
        {
          path: '/furnitures/list', 
          name: '商品列表', 
          component: './furnitures/list',
        }
  }]
},

//all
{
  path: '/',
  component: '../layouts/BasicLayout',
  Routes: ['src/pages/Authorized'],
  ... ...
}

可根据需求采用a、b两种引入页面的方式,b方式相当于将新增的页面统一嵌套在自定义的NormalLayout模板中;

  • PS
  1. 因为跳转页面是在缓存中处理的,我们更换账号登陆后,还是会默认跳回之前退出的页面,如果登陆默认跳转到固定页面:
    • src/models/login.js
    *login({ payload }, { call, put }) {
        ... ...
        // 关掉重定向的逻辑处理,并修改跳转代码
        // let { redirect } = params;
        // if (redirect) {
        //   const redirectUrlParams = new URL(redirect);
        //   if (redirectUrlParams.origin === urlParams.origin) {
        //     redirect = redirect.substr(urlParams.origin.length);
        //     if (redirect.match(/^\/.*#/)) {
        //       redirect = redirect.substr(redirect.indexOf('#') + 1);
        //     }
        //   } else {
        //     window.location.href = redirect;
        //     return;
        //   }
        // }
        // yield put(routerRedux.replace(redirect || '/'));

        yield put(routerRedux.replace('/'));
        ... ...
    }
  1. 如果跳转到不同权限的某个页面, 除了处理下login.js中的代码外,还需要进行一下处理:
    • src/models/menu.js
    *getMenuData({ payload }, { put }) {
        ... ...
        // 我设置的是默认跳转到权限下第一个页面
        yield put(routerRedux.replace(menuData[0].path || '/'));
        ... ...
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 项目的依赖包版本以及整体项目结构请访问:https://www.jianshu.com/p/4e9b6ab14f1...
    稚儿擎瓜_细犬逐蝶阅读 24,630评论 7 11
  • 蚂蚁金服开源的企业级React框架,并不是UI框架 特性开箱即用,内置react、react-router ......
    hellomyshadow阅读 22,997评论 8 10
  • 简介 参考博客: 全栈开发实战:用Vue2+Koa1开发完整的前后端项目(更新Koa2)前置技能: 具备Vue和K...
    Ghamster阅读 8,234评论 1 15
  • 今天还没到2019年的最后一个工作日,但是今天,整个环境都很温暖!到处都充满着温暖的话语。 公司里的的广播都在向2...
    水流张阅读 143评论 0 0
  • 许久以来,我总觉得,若是掂不起一管鲜灵活跳的笔,就难描西湖,也会愧对了她,愧对了她那妍丽绰约的山和水。也许,我说得...
    王哥的天下阅读 268评论 0 0