获取索赔信息

时间:2018-08-06 16:33:36

标签: asp.net-mvc claims-based-identity claims

我有2个项目,前端和后端。前端用于登录,后端用于实现Web API。我使用Frontend登录,获取令牌并使用此令牌对Web API进行身份验证。

在前端,我向“声明”添加了其他用户信息,如下所示:

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
        userIdentity.AddClaim(new Claim("birthday","2008-02-03"));
        return userIdentity;
    }
}

那么我如何在我的API控制器(在后端项目中实现)的Claims中获取生日信息。如果在项目Frontend中实现了此控制器,那么我可以获得这样的索赔信息

var identity = (ClaimsIdentity)User.Identity;
        IEnumerable<Claim> claims = identity.Claims;

但是,如果在后端项目中实现了API,我将无法在Claims上获得有关生日的任何信息。

这是我的API控制器:

[Authorize]
[RoutePrefix("api/test")]
public class TestController : ApiController
{
    [Route("getdata")]
    [HttpGet]
    public int GetData()
    {
        //I want get birthday from Claims here.
        return 1;
    }
}

谢谢。

0 个答案:

没有答案