AntDesign Pro 根据用户的角色对菜单实现权限管理

1.在routes.ts中添加菜单

{
    path: '/user', 
    name: '用户管理', 
    icon: 'user',
    hideChildrenInMenu: false,
    routes: 
    [
      {
        path: '/user/showUsers', 
        name: '用户列表', 
        component: './User/Manage'
      },
    ]
},

此时所有的用户登录展现的菜单效果都是这样的                        

接下来我们加入角色限制,

{
   path: '/user', 
   name: '用户管理', 
   icon: 'user',
   hideChildrenInMenu: false,
   routes: 
   [
      {
        path: '/user/showUsers', 
        name: '用户列表', 
        component: './User/Manage',
        access: 'canRoot' //此处限定为需要管理员角色才可见此菜单
      },
   ]
},

在src目录下的access.ts进行修改

export default function access(initialState: { currentUser?: API.LoginUserVO } | undefined) {
  const { currentUser } = initialState ?? {};
  return {
    canRoot: currentUser && currentUser.userRole === 'root' ? true : false,//返回true 展示
  };
}

管理员角色登录菜单效果:

普通用户角色登录菜单效果:

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ant Design Pro 是一个企业级的中后台前端/设计解决方案,它提供了丰富的组件和模板,使得开发者可以快速构建高质量的中后台应用。Ant Design Pro 中的动态路由菜单可以根据用户的权限动态生成菜单,从而提高应用的灵活性和实用性。 下面是实现 Ant Design Pro 动态路由菜单的步骤: 1. 在路由配置文件中设置动态路由: ``` const routerConfig = [ { path: '/home', component: './Home', routes: [ { path: '/home/page1', component: './Page1', name: 'Page1', authority: ['admin'], }, { path: '/home/page2', component: './Page2', name: 'Page2', authority: ['user'], }, ], }, ]; ``` 在上面的路由配置中,我们设置了两个子路由,分别是 `/home/page1` 和 `/home/page2`。除了设置路由的路径和组件之外,我们还设置了菜单的名称 `name` 和权限 `authority`。`authority` 属性用于控制该菜单项的显示权限,只有具备相应权限的用户才能看到该菜单项。 2. 在菜单配置文件中生成动态菜单: ``` const menuConfig = { routes: [ { path: '/home', name: 'Home', icon: 'home', authority: ['admin', 'user'], children: [ { path: '/home/page1', name: 'Page1', authority: ['admin'], }, { path: '/home/page2', name: 'Page2', authority: ['user'], }, ], }, ], }; ``` 在上面的菜单配置中,我们根据路由配置中设置的 `name` 和 `authority` 属性生成了动态菜单。如果用户具备相应的权限,他们就能看到对应的菜单项。 3. 在页面中加载菜单组件: ``` import { getMenuData } from '@ant-design/pro-layout'; class Page extends React.Component { render() { const { routes } = this.props; const menuData = getMenuData(routes); return ( <div> <Menu theme="dark" mode="inline" defaultSelectedKeys={['1']}> {menuData.map(item => this.renderMenuItem(item))} </Menu> </div> ); } renderMenuItem(menuItem) { if (menuItem.children) { return ( <SubMenu key={menuItem.path} title={menuItem.name}> {menuItem.children.map(item => this.renderMenuItem(item))} </SubMenu> ); } else { return ( <Menu.Item key={menuItem.path}> <Link to={menuItem.path}>{menuItem.name}</Link> </Menu.Item> ); } } } ``` 在上面的代码中,我们使用 `getMenuData` 函数从路由配置文件中获取动态菜单数据,并使用 Ant Design Pro 的 `Menu` 组件渲染出菜单。如果菜单项包含子菜单项,我们使用 `SubMenu` 组件渲染子菜单,否则使用 `Menu.Item` 组件渲染菜单项。 通过以上步骤,我们就可以实现 Ant Design Pro 动态路由菜单了。通过设置路由配置文件和菜单配置文件,我们可以根据用户的权限动态生成菜单,从而提高应用的灵活性和实用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值