2017-04-15 38 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;

相关问题