3

在 ocelot 身份验证之前,我必须对请求的 jwt 进行一些检查,所以我在PreAuthenticationMiddleware中进行这些检查,如下所示:

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();

next是否可以返回自定义响应而不是 not-invoking ?

我想返回 401 错误

4

1 回答 1

2

我认为这就是您要寻找的:

        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。

于 2019-12-16T21:01:19.297 回答