我想存储一些其他用户信息。据我了解,以下是通常的选择:
public class ApplicationUser : IdentityUser {
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) {
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public string FirstName { get; set; }
public string LastName { get; set; }
}
在这里,FirstName和LastName已添加,它们将作为其他字段显示在AspNetUsers表中。
但是,现在看来,有了Asp.Net Identity,还可以选择将这种类型的信息存储在AspNetUserClaims表中。
有人可以向我解释。向前发展的就是这种可以存储在AspNetUserClaims中的信息。如果是这样,那么任何人都没有这方面的例子。
最终,您登录的用户将转换为一系列声明,这些声明存储在HttpContext.User.Identity中代表您的用户的ClaimsIdentity中。您可以选择将FirstName / LastName存储为用户表中的列,然后可以将其显式读出并转换为适当的声明(如果需要),也可以将它们直接存储为AspnetUserClaims表中的声明(仅存储它们)作为两个字符串列),默认情况下,这些列会自动自动添加到用户的声明身份中。但这两种方法或多或少是等效的,因此取决于个人喜好。
顺便说一句,您完全希望在用户的ClaimsIdentity中使用这些名称的唯一原因是,您是否想保存数据库命中只是为了显示名称,并且始终在ClaimsIdentity中使用FirstName / LastName声明。如果获取用户,而改用user.FirstName,则在生成名称声明时也没有太大价值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句