У меня есть приложение webAPI, написанное на .NETCore, и все, что я хочу, - это перехватить запрос с помощью фильтра действий, а затем проверить токен JWT в заголовке from.Я написал ActionFilter, который выглядит следующим образом:
using Microsoft.AspNetCore.Mvc.Filters;
using Newtonsoft.Json;
namespace Applciation.ActionFilters
{
public class AuthorizeJWT: ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext context)
{
var jwt = context.HttpContext.Request.Headers["JWT"];
try
{
var json = new JwtBuilder()
.WithSecret(File.ReadLines("").ToList().First())
.MustVerifySignature()
.Decode(jwt);
var tokenDetails = JsonConvert.DeserializeObject<dynamic>(json);
}
catch (TokenExpiredException)
{
throw new Exception("Token is expired");
}
catch (SignatureVerificationException)
{
throw new Exception("Token signature invalid");
}
catch(Exception ex)
{
throw new Exception("Token has been tempered with");
}
}
}
}
Теперь я добавил фильтр действий в конфигурации служб, как показано ниже:
services.AddScoped<AuthorizeJWT>();
и украсил свойконтроллер, как показано ниже:
[AuthorizeJWT]
public virtual async Task<IActionResult> Ceate([FromBody]CreateDto,createDto)
{
//method body
}
Но по какой-то причине мой фильтр действий просто не вызывается.Что-то, чего мне не хватает в конфигурации?