Задать вопрос
Timur2342
@Timur2342

Почему Model.IsValid = false когда запрос валидный?

Отправляю токен на клиенте через axios:
const refresh = Cookies.get(refreshTokenInCookies);
const response = await axios
    .put<ITokens>("/tokensupdate", {
    RefreshToken: refresh ?? "",
    }).then();

console.log(response);


На сервере есть атрибут проверки валидации, выгледит так:
public class ValidationFilter : IActionFilter
{
    public ValidationFilter(ILogger<ValidationFilter> logger)
    {
        _logger = logger;
    }
    private readonly ILogger<ValidationFilter> _logger;
    public void OnActionExecuted(ActionExecutedContext context)
    {
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.ModelState.IsValid)
        {
            _logger.LogError("Model is valid");
            context.Result = new BadRequestResult();
        }
    }
}

[AttributeUsage(AttributeTargets.Method)]
public class ValidationFilterAttribute : ServiceFilterAttribute
{
    public ValidationFilterAttribute() : base(typeof(ValidationFilter))
    {

    }
}


Вот сам endpoint:
[HttpPut, Route("tokensupdate"), AnonymousOnly, ValidationFilter]
    public async Task<IActionResult> TokensUpdate([FromBody] string RefreshToken)


Если убераю этот атрибут все нормально, получаю токены с 200 кодом, если этот атрибут есть то 400 код.
Так вот, почему? По какой причине binding работает нормально(то есть данные отправленные должны быть валидны), но при этом Model.IsValid = false.
  • Вопрос задан
  • 63 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Все просто - ты с клиента передаешь JSON объект, а принимаешь на сервере строку.
Вот и не сходятся типы.
Либо делай DTO на сервере, либо передавай строку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы