如何在将ocelot与abp一起使用时将tenantid发送到下游服务



我目前正在使用ABP和ocelot为微服务构建一个api网关。一切都很好,但现在我想使用api网关作为域解析程序。ABP的域解析程序用于解析来自不同域的租户id,但我希望ocelot能够将解析的租户id发送到下游服务(在向下游服务的请求的标头中包括__tenant标头(。

您可以创建一个Middleware,用于将ResolvedId添加到请求头中。因此ocelot将编辑后的请求与tenantId一起发送到下游。

示例:

public class MyMiddleware : IMiddleware, ITransientDependency
{
private readonly ICurrentTenant CurrentTenant;
public MyMiddleware(ICurrentTenant currentTenant)
{
CurrentTenant = currentTenant;
}
public Task InvokeAsync(HttpContext context, RequestDelegate next)
{
context.Request.Headers.Add("__tenant", CurrentTenant.Id.ToString());
return next(context);
}
}

正如您所看到的,中间件手动处理请求,它将CurrentTenantId添加到请求中。CurrentTenant之前由您的";域租户解析器";。

您可以在app.UseMultiTenancy()&app.UseOcelot()

...
app.UseMultiTenancy();
app.UseMiddleware<MyMiddleware>(); // it must be here, between them
app.UseOcelot();
...

相关内容

  • 没有找到相关文章

最新更新