我正在尝试使用.NET identity。 我的用户具有与身份验证相关的属性。例如,电子邮件地址、密码、用户有权访问的项目等。 此外,用户还有其他字段,例如喜欢的颜色。
-
因为颜色与身份验证无关,所以我不想添加颜色作为应用程序用户的属性:IdentityUser {}。
-
但不知何故,我需要将值写入该字段,以便我可以编写一个存储库,该存储库采用常规 User 对象。但在这种情况下,我需要编写存储库,自己哈希密码,那么拥有 .NET 标识有什么意义呢?
-
第三种解决方案是制作 2 个表,一个用于 ApplicationUser,一个用于相关属性,但我们已经有一个数据库,我不想更改所有内容。
-
我能想到的另一个想法是将 ApplicationUser : IdentityUser {} 作为 User 的基本副本(我也不能从用户和 IdentityUser 继承,并且无法链接它,因为首先是数据库(并在身份验证上下文中有一个单独的 AuthenticationUser:IdentityUser。
我做得有多大?
谢谢
我认为对于这个问题,您必须像以下方式更改模型:
public class Person
{
public string Color { get; set: }
public int RoleId { get; set: }
public Role Role { get; set: }
public ICollection<UserAuthentication> UserAuthentications { get; set: }
}
public class UserAuthentication
{
public Person Person { get; set: }
public int PersonId { get; set: }
}
使用这些模型,您不会遇到此问题。
如果您有任何数据,可以使用TSql
替换它。