使用Web Api / OWIN Auth Token时的额外信息

时间:2016-06-20 10:01:17

标签: asp.net asp.net-web-api asp.net-web-api2 asp.net-identity

我使用开箱即用的身份验证与Web Api的Visual Studio模板附带的个人用户帐户。我在Angular.js前端使用了api。

毫不奇怪,我需要存储有关用户的额外信息,如名字和姓氏。我想在Register方法中设置这些额外的值。

Q值。我应该扩展用户模型还是应该将此信息存储为声明?

如果这些信息是自动的,那将是一个奖励。在/ Token的响应中返回,而不添加额外的代码。

1 个答案:

答案 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);
            }