2016-11-26 50 views
0

我正在使用web api mvc 5,我在做api调用日志记录。以下是一个片段在api日志中获取承载访问令牌

 protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
     var corrId = string.Format("{0}{1}", DateTime.Now.Ticks, Thread.CurrentThread.ManagedThreadId); 
     var requestInfo = string.Format("{0};{1}", request.Method, request.RequestUri); 

     var requestMessage = await request.Content.ReadAsByteArrayAsync(); 

     await IncommingMessageAsync(corrId, requestInfo, requestMessage); 

     var response = await base.SendAsync(request, cancellationToken); 

     byte[] responseMessage; 

     if (response.IsSuccessStatusCode) 
      responseMessage = await response.Content.ReadAsByteArrayAsync(); 
     else 
      responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase); 

     await OutgoingMessageAsync(corrId, requestInfo, responseMessage); 

     return response; 
    } 

什么,我想知道的是,我怎么能拿承载令牌如果请求是来自经过认证的使用。我试过HttpContext.Current.User,但它总是空。

在此先感谢。

+0

http://stackoverflow.com/a/18384253/4753489 –

回答

0

假设你的令牌标头,如授权密钥来,那么你可以从请求的头部拉承载令牌:

if (Request.Headers.Contains("Authorization")) 
     var bearerToken = Request.Headers.GetValues("Authorization").FirstOrDefault();