使用ASPNetIdentity

时间:2017-06-09 19:33:41

标签: asp.net-identity entity-framework-core claims-based-identity identityserver4

这是我的结构。

-Asp.Net c#IdentityServer 4的应用程序用于注册和验证用户。

-Asp.Net C#Web API,提供使用Identity4Server授权用户的一些服务

-Angular 4应用程序与ocid-client使用ASP.Net C#应用程序来验证角度应用程序。

问题: 实际上,当我在Web API应用程序中打印经过身份验证的用户声明时,我看不到用户电子邮件。有没有办法在索赔中看到它。

在WEB API应用程序中

    if (User.Identity.IsAuthenticated)
    {
        var claims = User.Claims.ToList();
        //Would like to see the User Email Informations
        var AspnetUserId = User.Claims.FirstOrDefault(p => p.Type == "sub").Value;

        this.ContactService.UpdateUserProfile(AspnetUserId,profile);
    }

在Indentity Server应用程序中

        new Client
        {
            ClientId = "tgc",
            ClientName = "Tag Twee Client Angular",
            AllowedGrantTypes = GrantTypes.Implicit,

            RequireConsent = false,
            AllowAccessTokensViaBrowser = true,
            RedirectUris = { "http://localhost:5002/login" },
            PostLogoutRedirectUris = { "http://localhost:5002/logout" },
            AllowedCorsOrigins = { "http://localhost:5002" },
            AllowedScopes =
            {
                IdentityServerConstants.StandardScopes.OpenId,
                IdentityServerConstants.StandardScopes.Profile,
                "TTAPI",
                IdentityServerConstants.StandardScopes.Email
            }
        }

1 个答案:

答案 0 :(得分:0)

您需要在dbo.AspNetUserClaims中添加值(在ASPNetIdentity数据库中) IdentityServer4将从此表中获取值并设置为用户声明。