2016-05-12 43 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中。