如何在Ocelot的PreAuthenticationMiddleware中停止请求?

时间:2019-06-26 12:03:26

标签: c# api-gateway asp.net-core-middleware ocelot

在ocelot身份验证之前,我必须对请求的jwt进行一些检查,因此我正在PreAuthenticationMiddleware内进行如下检查:

UnsupportedOperationException

是否可以返回自定义响应,而不是不调用var config = new OcelotPipelineConfiguration { PreAuthenticationMiddleware = async (ctx, next) => { var jwt = ctx.HttpContext.Request.Headers["Authorization"]; if (jwtIsOk(jwt)) next.Invoke(); // else ... } }; app.UseOcelot(config).Wait();

我想返回401错误

1 个答案:

答案 0 :(得分:0)

我认为这就是您想要的:

        var configuration = new OcelotPipelineConfiguration
        {
            PreAuthenticationMiddleware = async (ctx, next) =>
            {
                if (xxxxxx) 
                {
                    ctx.Errors.Add(new UnauthenticatedError("Your message"));

                    return;
                }

                await next.Invoke();
            }
        };

在这种情况下,我使用UnauthenticatedError(Ocelot的类),它将以401结尾。还有更多类似的内容。您还可以创建一个继承自Ocelot.Errors.Error的对象。