我们如何在不使用泛型类型进行自定义的情况下处理身份核心用户管理和用户存储的多个用户使用情况?

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# 在不知道类型的情况下,如何判断并使用带泛型的扩展方法?

如何在不丢失身份验证的情况下模拟Session.request?

我们可以在不使用 ASP.Net Identity 的情况下使用 MVC 5 提供的 cookie 身份验证吗?