我有一个带ASP.NET身份的MVC5项目。我在我的MVC5控制器中使用Claims,如下所示。
public ActionResult Index()
{
var prinicpal = (ClaimsPrincipal)Thread.CurrentPrincipal;
var email = prinicpal.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
}
但是,声明在同一项目中的WebApi控制器中不可用。如何在MVC5项目的WebApi控制器中访问登录用户的声明,我该怎么做?
谢谢。
答案 0 :(得分:0)
确保您的WebAPI控制器或操作使用[Authorize]
进行修饰。永远不会获得匿名请求的当前用户上下文。
[HttpGet]
[Authorize]
public IHttpActionResult Get()
{
try
{
var user = this.User as ClaimsPrincipal; //OR
var prinicpal = (ClaimsPrincipal)Thread.CurrentPrincipal;
var email = prinicpal.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
}
catch (Exception ex)
{
return InternalServerError(ex);
}
return Ok();
}