如何使用AspNet身份管理IdentityServer4中的多种用户类型?

时间:2019-06-19 19:56:21

标签: authentication asp.net-identity identityserver4

每个客户端存储用户信息的最佳方法是什么?我有几个应用程序都使用相同的IdentityServer实例进行身份验证。 ASP.NET Identity显示了如何通过从IdentityUser继承来扩展用户。

public class CustomUser : IdentityUser
{
   public Int32 CompanyId { get; set; }
}

但是,我的应用程序具有互斥的用户信息(例如,其他应用程序不需要CompanyId,并且具有CustomUser的应用程序不需要的属性。)。

一种方法是只创建一个包含两个属性的单个类型。当一个属性重叠时,两个应用程序都需要不同公司的CompanyIds时,可能会出现问题,更不用说每次查询都总是查询每个列,因此这似乎不对。另一个选择是,我可以在客户端应用程序中创建UserData表,然后根据需要从那里查询。这可能是我必须要做的,因为我认为没有更好的选择。

如果有人知道更好的方法,请告诉我。

如果UserManager允许向多个自定义用户类型注册,并且您可以根据选择获得不同的数据子集,而每个查询仅针对所需的数据进行了优化,那将是完美的选择。然后,您可以将每个类型的SQL索引,甚至用户TPH放入实体框架中,以组织信息。

1 个答案:

答案 0 :(得分:0)

除非深入研究特定于应用程序的内容,否则它看起来就像是普通的用户个人资料。
其中包含许多描述用户的声明。让我们只考虑特定用户,而不考虑特定应用。例如,有年龄,国家,邮政地址,性别等等。有些应用只需要年龄和国家/地区来限制某些内容,而其他应用则需要邮政地址或电子邮件。
授权请求可以包含一组声明和范围来满足这些要求。
以上仅是关于用户信息,而不是访问规则,以上所有内容都已包含在协议中。

关于更多特定于应用程序的内容...为什么不将此类内容存储在更靠近应用程序的位置并按用户ID链接...