首页 > 解决方案 > ASP.Net Core 身份和配置文件数据

问题描述

我有几个关于在哪里存储其他用户数据的问题,例如 AspNet Core Identity 中的用户照片和个人资料数据。最好的解决办法是把地址(城市、地区等)和用户的图片分别存放在一个单独的数据库表中,PK作为用户表的FK(防止用户表增长很多),或者最好保存这个额外的用户投诉中的数据?

UserClaims 表是否仅适用于来自第三方(如 Google、Facebook)的声明,还是我可以如上所述使用它?

我希望我很清楚。谢谢

标签: c#asp.net-coreasp.net-identity

解决方案


最好的解决办法是把地址(城市、地区等)和用户的图片分别存放在一个单独的数据库表中,PK作为用户表的FK(防止用户表增长很多),或者最好保存这个额外的用户投诉中的数据?

通常我们会将用户的配置文件数据存储在AspNetUsers表中。

如果你想防止AspNetUsers表增长很多,正如你提到的,使用单独的表来存储头像、地区和城市等用户数据,并建立和之间的关系UserProfileApplicationUser可以的。但请注意,它可能需要从多个表中查询才能获得预期的数据。

public class UserProfile 
{
    public string UserProfileId { get; set; }

    public string City { get; set; }
   
    //...
    //other properties
    //...

    public string UserId { get; set; }

    public ApplicationUser User { get; set; }
}

此外,AspNetUserClaims存储与应用程序用户关联的声明。我们可以根据实际情况使用以下代码段向用户添加指定的声明。

await _userManager.AddClaimAsync(user, new Claim("type_here", "value_here"));

推荐阅读