Внедрение 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"));