我有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;
}
}
谢谢。