我使用开箱即用的身份验证与Web Api的Visual Studio模板附带的个人用户帐户。我在Angular.js前端使用了api。
毫不奇怪,我需要存储有关用户的额外信息,如名字和姓氏。我想在Register方法中设置这些额外的值。
Q值。我应该扩展用户模型还是应该将此信息存储为声明?
如果这些信息是自动的,那将是一个奖励。在/ Token的响应中返回,而不添加额外的代码。
答案 0 :(得分:0)
我决定在对/Token
电话的回复中返回额外信息。
在ApplicationOAuthProvider
(这是模板项目的一部分)中,我更改了CreateProperties
并调整了2个地方的CreateProperties
调用以传递用户,而不仅仅是用户名:
public static AuthenticationProperties CreateProperties(ApplicationUser user)
{
var firstNameClaim = user.Claims.FirstOrDefault(c => c.ClaimType == ClaimTypes.GivenName);
var lastNameClaim = user.Claims.FirstOrDefault(c => c.ClaimType == ClaimTypes.Surname);
var roles = user.Claims.Where(c => c.ClaimType == ClaimTypes.Role).Select(c => c.ClaimValue);
IDictionary<string, string> data = new Dictionary<string, string>
{
{ "userName", user.UserName },
{"firstName", firstNameClaim != null ? firstNameClaim.ClaimValue : "" },
{"lastName", lastNameClaim != null ? lastNameClaim.ClaimValue : "" },
{"roles", string.Join( ",", roles) }
};
return new AuthenticationProperties(data);
}