2017-04-15 36 views
0

我試着按照本教程:http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api-key-authentication-hmac-authentication/如何設置HttpAuthenticationContext.Errorcontext未經授權

關於如何保護的WebAPI與HMAC。某處在教程代碼它它給:

public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken) 
    { 
     var req = context.Request; 

     if (req.Headers.Authorization != null && authenticationScheme.Equals(req.Headers.Authorization.Scheme, StringComparison.OrdinalIgnoreCase)) 
     { 
      var rawAuthzHeader = req.Headers.Authorization.Parameter; 

      var autherizationHeaderArray = GetAutherizationHeaderValues(rawAuthzHeader); 

      if (autherizationHeaderArray != null) 
      { 
       var APPId = autherizationHeaderArray[0]; 
       var incomingBase64Signature = autherizationHeaderArray[1]; 
       var nonce = autherizationHeaderArray[2]; 
       var requestTimeStamp = autherizationHeaderArray[3]; 

       var isValid = isValidRequest(req, APPId, incomingBase64Signature, nonce, requestTimeStamp); 

       if (isValid.Result) 
       { 
        var currentPrincipal = new GenericPrincipal(new GenericIdentity(APPId), null); 
        context.Principal = currentPrincipal; 
       } 
       else 
       { 
        context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request); 
       } 
      } 
      else 
      { 
       context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request); 
      } 
     } 
     else 
     { 
      context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request); 
     } 

     return Task.FromResult(0); 
    } 

我複製它,當然,但MVC不知道這些參數的任何未經授權的結果。所以這一行給出了一個錯誤:context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request);

我想不出如何回報正確的結果。有人知道嗎?

回答

0

我使用了錯誤的命名空間。應該是using System.Web.Http.Results;

相關問題