根据请求范围自动向消息添加自定义 header
Automatically adding custom header to message based on request scope
我的 ApiGateway 中的 RequestClients 被注入(使用默认的 MS DI)到 HTTP 请求处理程序中(在这些处理程序中我可以访问当前请求范围)。我想要的是自动为每个 RequestClient 添加自定义消息 header,我可以在其中放置一些来自请求范围的数据。用例是从请求中获取 JWT,并将其作为自定义 header 添加到消息中。然后在消费者方面,我需要,对于每个收到的请求,检查自定义 header,验证 JWT,并将其中的一些数据添加到消费请求范围,以便我可以访问例如 IUserContext 或类似的东西。例如,我想避免手动将 jwt 添加到消息合同中。
如何在客户端和消费者端配置 MassTransit 来实现我想要的?我已经阅读了有关中间件、管道和观察器的文档,但我仍然无法弄清楚...
使用 RabbitMQ 传输。
因此,将其放入 post 中非常复杂,因此我 created a complete sample 展示了如何使用 MassTransit 作用域过滤器。
在此示例中,向控制器注册了一个操作过滤器以自动提取 Token
header 并存储它,以便在从控制器发布或发送消息时使用它。 MassTransit 过滤器在总线上配置,因此它们可用于所有接收端点。
我的 ApiGateway 中的 RequestClients 被注入(使用默认的 MS DI)到 HTTP 请求处理程序中(在这些处理程序中我可以访问当前请求范围)。我想要的是自动为每个 RequestClient 添加自定义消息 header,我可以在其中放置一些来自请求范围的数据。用例是从请求中获取 JWT,并将其作为自定义 header 添加到消息中。然后在消费者方面,我需要,对于每个收到的请求,检查自定义 header,验证 JWT,并将其中的一些数据添加到消费请求范围,以便我可以访问例如 IUserContext 或类似的东西。例如,我想避免手动将 jwt 添加到消息合同中。
如何在客户端和消费者端配置 MassTransit 来实现我想要的?我已经阅读了有关中间件、管道和观察器的文档,但我仍然无法弄清楚...
使用 RabbitMQ 传输。
因此,将其放入 post 中非常复杂,因此我 created a complete sample 展示了如何使用 MassTransit 作用域过滤器。
在此示例中,向控制器注册了一个操作过滤器以自动提取 Token
header 并存储它,以便在从控制器发布或发送消息时使用它。 MassTransit 过滤器在总线上配置,因此它们可用于所有接收端点。