如何在ASP.NET Identity Core用户和自定义外部表之间建立多对多关系?

时间:2018-11-29 20:26:29

标签: c# asp.net-core many-to-many identityserver4 asp.net-core-identity

我有一个在ASP.NET Identity Core之上运行IdentityServer4的ASP.NET Core 2.1项目,如here所述。该项目具有自己的独立SQL Server数据库,用于存储ASP.NET Identity Core表。

然后,我还有很多其他项目,包括受IdentityServer保护的ASP.NET Core 2.1 API。这些项目与另一个包含所有Web应用程序特定数据的SQL Server数据库进行通信。

我想表达用户(位于IdentityServer数据库中)和租户(位于app数据库中)之间的多对多关系。

我正在考虑几种可能性:

  1. 向每个用户添加一个或多个声明,以指定对租户的访问权限。因此,基本上每个用户都会拥有tenant类型的声明,其值是租户的ID。
    因此,当我需要让用户可以访问API中的所有租户时,我可以执行IEnumerable<Claim> tenants = User.FindAll("tenant")
    因为documentation说:
  

声明是一个名称值对,表示主题是什么,而不是   受试者可以做什么。

  1. 另一种选择是在应用数据库中有一个Users表,每条记录都引用了ASP.NET Identity Core用户的ID。然后从该表在应用数据库中创建一个正常的多对多关系。
    这使事情变得更易于管理,但是我需要在IdentityServer数据库中的用户和应用程序数据库中的用户之间强制执行1-1映射。

您能想到解决此问题的更好方法吗?如果没有,您会选择选项1还是2?

0 个答案:

没有答案