访问mvc5项目中的web api控制器中的声明

时间:2017-07-30 12:50:45

标签: asp.net-web-api asp.net-mvc-5 claims

我有一个带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控制器中访问登录用户的声明,我该怎么做?

谢谢。

1 个答案:

答案 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();
   }