/**

  • @see https://umijs.org/zh-CN/plugins/plugin-access
  • */ export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) { const { currentUser } = initialState ?? {}; const rolesList = currentUser?.rolesList.map((item :any) => { return item.code }) console.log('路由权限判断的数据',currentUser) return { canAdmin: currentUser && currentUser.access === 'admin', // 不良资产分配 鉴权 litigationAssignHide: (route:any) => { console.log('路由权限判断的结果',rolesList.includes('ADMIN_MGR')) console.log('路由数组',rolesList) let isHide = true if(rolesList && rolesList.length > 0) { switch(rolesList[0]) { case 'ADMIN_MGR': isHide = true; break; case 'ZCADMIN_MGR': isHide = true; break; default: console.log('路由权限判断的结果1',rolesList.includes('ADMIN_MGR')) isHide = false break } } else { console.log('路由没有权限') isHide = false } console.log('路由',isHide) return isHide } }; }

在给定的代码片段中,rolesList 是一个数组,但是 switch 语句不能直接用数组作为条件进行判断。switch 语句需要一个可以进行相等比较的值,而非一个条件表达式。

因此,你需要将 switch 语句修改为如下形式,使用 rolesList[0] 作为条件进行判断:

switch (rolesList[0]) {
  case 'ADMIN_MGR':
    isHide = true;
    break;
  case 'ZCADMIN_MGR':
    isHide = true;
    break;
  default:
    console.log('路由权限判断的结果1', rolesList.includes('ADMIN_MGR'));
    isHide = false;
    break;
}

这样,当 rolesList 数组中的第一个元素为 'ADMIN_MGR''ZCADMIN_MGR' 时,isHide 将会被设置为 true。如果 rolesList 数组为空或不含有这些元素,isHide 则为 false

UmiJS Plugin Access: 路由权限控制最佳实践

原文地址: https://www.cveoy.top/t/topic/bTBw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录