Внедрение AuthenticationMiddleware в Ocelot - как вернуть 401

Я думаю, что этот вопрос является тривиальным, но я не могу найти ответ на него:

Я использую Ocelot в качестве шлюза API и использую свое собственное промежуточное программное обеспечение для аутентификации, поскольку мне нужно аутентифицировать пользователей по нашей собственной базе данных. Счастливый путь работает просто отлично. Однако, если пользователь не может аутентифицироваться, я могу вернуть только 500 внутренних ошибок сервера, но я не знаю, как заставить ocelot вернуть 401.

Может кто-нибудь мне помочь? Это было бы самым основным из того, что я имею в виду:

var authSuccess = authenticate();
if (authSuccess)
{
    await next.Invoke();
} else
{
    // cancel and Return 401
}

1 ответ

Итак, я заглянул в репо и нашел то, что мне помогло:

AuthenticationMiddleware = async (context, next) =>
{
   var authSuccess = authenticate();
   if (authSuccess)
   {
       await next.Invoke();
   } else
   {
      var error = new UnauthenticatedError("Some Message");
      context.Errors.Add(error);
   }
}       

Вы можете сделать медленный способ

await ctx.HttpContext.Response.WriteAsync("{'error':'Your message'}");
ctx.Errors.Add(new UnauthenticatedError("Your message"));
Другие вопросы по тегам