我有一些api操作,包括OnMethodBoundaryAspect方面的一個方面, 我對請求發送的令牌進行了驗證,就像這樣。使用postharp返回未經授權的結果OnMethodBoundaryAspect
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)]
public class TokenCallHandler : OnMethodBoundaryAspect
{
/// <summary>
/// Methodo responsável por validar o token enviado pelo usuário
/// </summary>
/// <param name="args"></param>
public override void OnEntry(MethodExecutionArgs args)
{
ApiController apiController = (ApiController)args.Instance;
var context = apiController.ControllerContext;
HttpRequestHeaders headers = context.Request.Headers;
bool validToken = false;
if (headers.Contains("X-Authorization"))
{
var authorization = headers.GetValues("X-Authorization");
var token = authorization.ToList().FirstOrDefault();
if (token == null)
token = "invalid";
validToken = TokenUtil.ValidateToken(token);
}
if (!validToken)
args.ReturnValue = new UnauthorizedAccessException();
}
}
但它一直在執行api中的方法,我只想返回401異常。
如果我拋出新UnauthorizedException它與500(內部服務器錯誤)返回其內部未經授權的,但我需要的401
我怎樣才能在wep.api動作捕捉方面退換嗎?