2017-07-30 70 views
0

我有一個ASP.NET身份的MVC5項目。我在下面的MVC5控制器中使用了聲明。訪問在MVC5項目中的web api控制器的聲明

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

您需要在您的WebAPI控制器或操作的頂部裝飾'[Authorize]'屬性來訪問聲明。 –

回答

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