0

我们有一个多租户架构,有多个用户,如下所示,带有身份核心库:

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,因为默认功能对我们来说没问题,我们只想通用处理不同类型的用户。我们怎么能处理这种情况呢?谢谢你。

4

1 回答 1

0

您可以尝试创建一个关系对象来存储附加的用户信息(而不是添加用户的扩展名:将自定义字段添加到用户表),然后配置它们与 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;

如果您想获取用户附加信息,请尝试加载相关数据或使用Join 运算符

于 2020-11-24T07:42:43.337 回答