Я использую токены JWT для аутентификации
services.AddAuthentication(options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(jwtOptions =>
{
jwtOptions.TokenValidationParameters = tokenValidationParameters;
});
В моем контроллере атрибут [Authorize]
используется для проверки подлинности вызывающей стороны. Это отлично работает.
Однако: если неавторизованный пользователь делает запрос, он получает ответ 401. Можно ли как-нибудь «перехватить» этот ответ и записать, что был сделан несанкционированный вызов?
EDIT
Было предложено добавить «промежуточное ПО для исключений», которое я уже сделал, но неавторизованный вызов не вызывает исключение ...
services.AddMvc()
.AddMvcOptions(options =>
{
// Order is important! A request will run from top to bottom through each filter.
options.Filters.Add(typeof(MyExceptionFilterAttribute));
});
и атрибут:
public class MyExceptionFilterAttribute : ExceptionFilterAttribute
{
/// <summary>
/// ctor
/// </summary>
public MyExceptionFilterAttribute()
{
}
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public override void OnException(ExceptionContext context)
{
ApplicationLogger.LogError("Bad request", context.Exception);
}
}