Как я могу создать фильтр для UnauthorizedAccessException

#asp.net-core #asp.net-web-api

#asp.net-core #asp.net-web-api

Вопрос:

Я хочу создать фильтр для исключения несанкционированного доступа, я не знаю, почему это не работает в моем основном фильтре, сначала я пробую это в моем ApiExceptionFilter: ExceptionFilterAttribute, но здесь не сработало

 private void HandleUnauthorizedAccessException(ExceptionContext context)
{
            var exception = context.Exception as UnauthorizedAccessException;

            var details = new ProblemDetails
            {
                Status = StatusCodes.Status401Unauthorized,
                Title = "nauthorized exception",
                Detail = exception.Message
            };

            context.Result = new ObjectResult(details)
            {
                StatusCode = StatusCodes.Status401Unauthorized
            };

            context.ExceptionHandled = true;
}
  

все остальные мои исключения работают здесь вместо этого

после этого я пытаюсь получить это здесь, но снова безуспешно :

 
public class HttpResponseExceptionFilter : IActionFilter, IOrderedFilter
{
    public int Order { get; set; } = int.MaxValue - 10;

    public void OnActionExecuting(ActionExecutingContext context) { }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        if (context.Exception is HttpResponseException exception)
        {
            context.Result = new ObjectResult(exception.Value)
            {
                StatusCode = exception.Status,
            };
            context.ExceptionHandled = true;
        }
    }
}
  

Я не знаю, почему только это исключение не сработало после отправки запроса в api: (

Комментарии:

1. Не могли бы вы подробнее разъяснить вопрос?

2. @FeiHan Я хочу создать фильтр авторизации, чтобы генерировать исключение, когда пользователь не авторизован, и возвращать пользовательский ответ клиенту