在 Ocelot 中注入 AuthenticationMiddleware - 如何返回 401
Posted
技术标签:
【中文标题】在 Ocelot 中注入 AuthenticationMiddleware - 如何返回 401【英文标题】:Injecting AuthenticationMiddleware in Ocelot - how to return 401 【发布时间】:2019-06-22 07:06:31 【问题描述】:我认为这个问题有点琐碎,但我找不到答案:
我使用 Ocelot 作为 API 网关并使用我自己的身份验证中间件,因为我需要根据我们自己的数据库对用户进行身份验证。快乐的道路工作得很好。但是,如果用户无法进行身份验证,我只能返回 500 内部服务器错误,但我不知道如何让 ocelot 返回 401。
谁能帮帮我?这将是我的意思的基本意思:
var authSuccess = authenticate();
if (authSuccess)
await next.Invoke();
else
// cancel and Return 401
【问题讨论】:
【参考方案1】:好的,所以我进一步研究了 Repo,发现了一些对我有帮助的东西:
AuthenticationMiddleware = async (context, next) =>
var authSuccess = authenticate();
if (authSuccess)
await next.Invoke();
else
var error = new UnauthenticatedError("Some Message");
context.Errors.Add(error);
【讨论】:
我只得到状态码,但没有正文消息。我想向客户显示消息。该怎么做? 对我来说同样的问题,上下文中没有错误属性。【参考方案2】:你可以这样做
await ctx.HttpContext.Response.WriteAsync("'error':'Your message'");
ctx.Errors.Add(new UnauthenticatedError("Your message"));
【讨论】:
以上是关于在 Ocelot 中注入 AuthenticationMiddleware - 如何返回 401的主要内容,如果未能解决你的问题,请参考以下文章