ASP 核心。多重身份的最佳实践

2024-02-28

env: Asp Core, Entity-framework

在我的系统中我有两种类型

[Table("User")]
ApplicationUser : IdentityUser<Guid>

[Table("Customer")]
Customer : IdentityUser<Guid>

两个实体(Customer and User)有许多不同的字段,是什么使得仅使用数据库中的一个表是不正确的。并且两个实体都必须能够登录。
我发现 ASP Net 只能有一个身份设置。

问题:让这些东西发挥作用的最佳方法或最佳实践是什么?


我建议您不要尝试混合或统一应用程序用户的身份和来自应用程序的另一个边界上下文的应用程序用户的含义。

应用程序用户的身份记录是其从安全角度的表示,用于用户的身份识别/认证。因此它包含用户安全数据、其访问角色和其他安全声明。任何身份记录都可以根据其角色和声明拥有非常具体的访问权限,通常这就足够了。

如果您需要从另一个角度代表应用程序用户(作为您的员工,或者作为您的客户,可能作为访客记录等),那么最好在另一个表中为其创建另一个表(Employees、Customers、Guests 等) DbContext(不在身份上下文中)。它将使您有可能不混淆它们的概念边界。谁知道呢,也许在某个时刻您会决定为每个边界上下文创建单独的微服务,而身份会将它们作为另一个微服务提供服务。

如果您现在问自己如何组织同一应用程序用户的解释的这种并行存储,那么有不同的方法。但例如:

  • 当用户注册时,您为他创建身份
  • 当他登录时,他使用他的身份数据进行身份验证
  • 但是,当他创建第一个订单时,您为他创建具有与他的身份相同的 Id 的客户记录,或者具有身份的外键,或者......其余的取决于您的需求和业务逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP 核心。多重身份的最佳实践 的相关文章

随机推荐