Используя собственный фильтр вместо встроенной системы аутентификации и авторизации, вы не сможете использовать [AllowAnonymous]
здесь, поскольку это напрямую связано с платформой аутентификации.
Что вы можетесделать, это добавить дополнительные метаданные, которые вы затем проверить как часть вашего фильтра JwtAttribute
.Например, создайте другой атрибут, например, так:
public class DisableJwtAttribute : Attribute, IFilterMetadata
{ }
Теперь вы можете добавить этот атрибут в действие вашего контроллера с помощью [DisableJwt]
.
А внутри фильтра JwtAttribute
вы можетеТеперь проверьте существование этого фильтра, чтобы прекратить обработку запроса.Например, если ваш фильтр является фильтром авторизации, он будет выглядеть следующим образом:
public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
{
if (context.Filters.Any(item => item is DisableJwtAttribute))
return;
// filter is active
}
При этом, решение лучше будет заключаться в том, чтобы охватить систему аутентификации и обеспечить проверку JWTчасть нормального процесса аутентификации.Таким образом, вы можете воспользоваться всеми преимуществами аутентификации и авторизации в ASP.NET Core.