我们如何在不使用泛型类型进行自定义的情况下处理身份核心用户管理和用户存储的多个用户使用情况?
Posted
技术标签:
【中文标题】我们如何在不使用泛型类型进行自定义的情况下处理身份核心用户管理和用户存储的多个用户使用情况?【英文标题】:How can we handle more than one user usage for identity core usermanagement and userstore without customization with generic type? 【发布时间】:2021-03-05 22:33:07 【问题描述】:我们有一个多租户架构,具有多个用户,如下所示:
public class ApplicationUser : IdentityUser
public class Tenant1User: ApplicationUser
public int deneme get; set;
public class Tenant2User: ApplicationUser
public string City get; set;
public string Picture get; set;
public DateTime? BirthDay get; set;
public int Gender get; set;
我们想在注入 usermanager 时在控制器构造函数中一般使用 UserManager,因为我们不想使用低于租户数的可能会变得越来越大,并且控制器将充满 usermanager 注入:
private UserManager<Tenant1User> _userManager get;
private UserManager<Tenant2User> _userManager2 get;
public AccountController(
UserManager<Tenant1User> userManager,
UserManager<Tenant1User> userManager2,
) : base(logger: logger)
_userManager = userManager;
_userManager2 = userManager2;
我们想像 UserManager 一样使用,但是这种实现以错误结束,我们不想自定义 UserManager,因为默认功能对我们来说没问题,我们只想通用处理不同类型的用户。 我们怎么能处理这种情况呢? 谢谢。
【问题讨论】:
【参考方案1】:您可以尝试创建一个关系对象来存储额外的用户信息(而不是添加用户的扩展名:将自定义字段添加到用户表),然后配置它们与 ApplicationUser 表之间的关系。如下:
public class ApplicationUser : IdentityUser
public virtual UserAdditionalInfo UserAdditionalInfo get; set;
/// used to add the additional information for users
public class UserAdditionalInfo
public int deneme get; set;
然后,在控制器中,您可以通过 ApplicationUser 表和 UserManager() 类来管理用户:
private readonly UserManager<ApplicationUser> _userManager;
如果您想获取用户的其他信息,请尝试load the related data 或使用Join operator。
【讨论】:
以上是关于我们如何在不使用泛型类型进行自定义的情况下处理身份核心用户管理和用户存储的多个用户使用情况?的主要内容,如果未能解决你的问题,请参考以下文章
在WCF中,自定义Authentication,Validate方法,抛出错误异常时如何在不停止服务的情况下处理异常?
如何在不使用 foreach 的情况下将 ArrayList 转换为强类型泛型列表?
我如何在不使用Delphi约束的情况下确定泛型类型为nil?
c# 在不知道类型的情况下,如何判断并使用带泛型的扩展方法?