2016-05-12 44 views
1

我在我使用的令牌的承載來認證連接的用戶網絡API控制器檢索令牌值:從網頁API動作內的請求

protected ApplicationUserManager UserManager 
{ 
    get 
    { 

     return _UserManager ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
    } 
} 

[Route("Create")] 
[HttpPost] 
public IHttpActionResult CreateEvent(CreateEventModel model) 
{ 
    String userID = UserManager.FindByName(User.Identity.Name).Id; 
    int EventID = EventRep.CreateEvent(userID, model.EventTitle, model.EventDate, model.NbParticipent, model.Description, model.Logo); 
    if(EventID > 0) return Ok(EventID); 
    return BadRequest("paramètres invalides") ; 
} 

由於RESTful應用程序必須是無狀態的,我想避免使用User.Identity和替換該行

String userID = UserManager.FindByName(User.Identity.Name).Id; 

我需要檢索請求令牌承載,然後找到相應的 用戶。

所以:

  1. 我怎樣才能做到這一點?
  2. 做什麼是最好的方法?
+1

創建一個DelegateHandler或ActionFilter並檢查標頭的持票人標記。然後,您可以檢索用戶,創建用戶的正確主體並將其設置在線程和httpcontext中 – Nkosi

+0

@Nkosi請將您的評論發佈爲答案 –

回答

1

您可以創建一個DelegateHandlerActionFilter來檢查承載令牌的請求標頭。

然後,您可以檢索用戶,創建用戶的適當IPrincipal並將其設置在當前線程和HttpContext中。