【问题标题】:Extra info when using Web Api/OWIN Auth Token使用 Web Api/OWIN Auth Token 时的额外信息
【发布时间】:2016-10-21 12:54:55
【问题描述】:

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

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

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

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

【问题讨论】:

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


【解决方案1】:

我决定在对/Token 调用的响应中返回额外信息。

ApplicationOAuthProvider(模板项目的一部分)中,我更改了CreateProperties,并在两个地方调整了对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);
            }

【讨论】:

    猜你喜欢
    • 2015-03-11
    • 2015-12-25
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多