2017-07-30 11 views
0

私はASP.NET IDを持つ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のコントローラまたは特許請求の範囲にアクセスするための行動の上に飾ら '[オーソライズ]'属性を持っている必要があります。 –

答えて

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(); 
    } 
関連する問題