【发布时间】:2017-12-28 01:24:21
【问题描述】:
我的应用程序是带有实体框架 6 的 .NET 4.7 Web Api。
这是针对我正在构建的软件即服务工具。在我的应用程序中,AspNetUser 和 Company 之间存在多对多关系。
一个用户可以有很多公司,一个公司可以有很多用户。用户需要根据要与之合作的公司具有不同的角色/权限集。实现这样的事情的最佳方法是什么?
我曾考虑将 CompanyId 列添加到 AspNetUserRoles 表中,这样用户对于与其相关的不同公司将具有不同的角色。我不确定这是一个很好的实现,它可能会破坏授权的工作方式,所以在我更清楚地了解事情的工作原理之前,我不想碰它。
到目前为止,我已经找到了 this guide 关于多租户应用程序的基于资源的授权。这似乎是我正在寻找的,但它适用于 .NET Core,我不确定它是否适用于 .NET 4.7。
我无法为 .NET 4.7 找到类似的东西,所以我正在联系堆栈溢出社区。
【问题讨论】:
-
考虑将您的问题范围缩小到您在选择的实现中遇到的任何问题。
-
@NoRefundsNoReturns 我没有选择的实现,我在问哪种实现最好推进。我迷失在起点。
-
建议:重新评估您是否真的需要用户和公司是多对多的。如果您可以避免这种情况并陷入多租户的常见模式,其中每个公司(租户)拥有一个用户,并且如果一个用户需要与多个公司关联,那么他们有多个帐户,这会容易得多。如果您绝对必须允许用户在公司(租户)之间共享,那么您最好的选择是覆盖和重写大部分身份框架以支持用户和公司(公司用户实体)之间以及公司用户和公司之间的多对多关系。角色(CompanyUserRole 实体)。
-
@chambo 允许一些用户管理许多公司并让公司拥有自己的用户是我提供的一个关键部分。我将 CompanyId FK 添加到 AspNetUserRoles 表并编写了自定义 RoleProvider。这似乎可行,这样做有没有我没有看到的缺点?
标签: c# asp.net .net entity-framework asp.net-web-api