我有一些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动作捕捉方面退换吗?