如何在 WPF 应用程序中实现基于角色的菜单访问列表

Posted

技术标签:

【中文标题】如何在 WPF 应用程序中实现基于角色的菜单访问列表【英文标题】:How to Implement Role based Menu Access List in WPF application 【发布时间】:2014-05-22 08:07:31 【问题描述】:

我正处于设计基于角色的访问列表的阶段,其中角色将分配给组而不是个人用户,请参阅 excel 文件的屏幕截图以获取完整的表格理念。

有 6 个表。

用户、组、用户组、角色、GroupRole、菜单

UserGroup(用户和组之间的多对多) GroupRole(角色和组之间的多对多)

现在我想要的是基于我想要实现菜单并获取其菜单项并填充我的导航栏项的组。屏幕截图中也可以看到菜单表。

我需要专家建议如何实现 Menu 与 Group 的链接,我认为 Menu 应该与 Group with (Many to Many ) 有链接,但我需要你的建议。

结果: 最后,我想要的是,当用户基于他的组登录时,他的菜单将填充到我们的 WPF 应用程序中,然后根据他的角色,他将能够使用该应用程序。

如果我不在正确的轨道上,请指导。

【问题讨论】:

我认为首先你需要一个菜单​​和角色之间的链接表来确定哪些角色可以查看哪些菜单项 【参考方案1】:

您需要实现评估当前用户权限的属性/方法(例如 CurrentUser.AllowedToCreate、CurrentUser.AllowedToRead、...)。要减少权限数量,您可以使用枚举标志 (AllowedToCreate = AllowedToRead + AllowedToCreate)。

然后在WPF端可以通过DataTriggers(MultipleDataTriggers)来控制菜单项的Visibility/IsEnabled。

【讨论】:

我首先尝试设计数据库,所以我很感谢你在对齐表格时提出的建议。所以你的建议,应该使用多对多将我的菜单表与角色表附加,或者我应该使用多对多将菜单表与组表附加,有点困惑 例如,如果我是经理,并且 Group Managers 中的所有用户都可能读取和更新 Sales,那么您需要创建具有 MenuId 和 GrouRoleId 的多对多表 MenuGroupRole,然后添加两行在其中(销售、经理、阅读和销售、经理、更新)。 太棒了,所以如果我理解正确,我将在 Menu 表和 GroupRole 表 (MenuGroupRole) 之间创建多对多关系,该表将为我提供分配给 GroupRole 的所有菜单,最终将绑定up with user 因为该用户将成为该组的一部分。对吗?

以上是关于如何在 WPF 应用程序中实现基于角色的菜单访问列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 中实现基于角色的访问控制

如何在微服务架构中实现基于角色的安全性

授权服务如何在基于角色的微服务架构中实现所有权检查

如何在 Spring Boot 中实现基于角色权限的系统

AngularJS中实现权限控制 - 基于RBAC

如何在 Azure AD B2C 中实现基于成员的访问?