【发布时间】:2019-11-02 15:00:42
【问题描述】:
为每个客户存储用户信息的最佳方式是什么?我有几个应用程序都使用相同的 IdentityServer 实例进行身份验证。 ASP.NET Identity 展示了如何通过从 IdentityUser 继承来扩展用户。
public class CustomUser : IdentityUser
{
public Int32 CompanyId { get; set; }
}
但是,我的应用程序具有互斥的用户信息(例如,其他应用程序不需要 CompanyId 并且具有 CustomUser 的应用程序不需要的属性。)。
一种方法是创建一个包含两者所有属性的单一类型。当两个应用程序都需要不同公司的 CompanyId 的属性重叠时,可能会出现问题,更不用说每次查找完成时都会查询每一列,所以这似乎不正确。另一种选择是我可以在客户端应用程序中创建一个 UserData 表并根据需要从那里查询,这可能是我必须做的,因为我认为没有更好的选择。
如果有人知道更好的方法,请告诉我。
如果 UserManager 允许注册多个自定义用户类型,并且您可以根据您的选择获得不同的数据子集,同时每个查询仅针对其需要的数据进行优化,那将是完美的。然后,您可以为每种类型放置一个 SQL 索引,甚至可以在实体框架中放置用户 TPH 来组织信息。
【问题讨论】:
-
看看我的回答这里有一些想法:stackoverflow.com/questions/52079466/…
-
出现的问题是我将如何处理每个应用程序的重复角色,我发现这个链接 (stackoverflow.com/questions/41800273/…) 看起来可能是一个很好的角色解决方案。我也必须考虑索赔。我有一个单独的权限解决方案,适用于每个应用程序和角色。
标签: authentication asp.net-identity identityserver4