我在我的项目(clean Architecture)中使用了MassTransit包。
在api层,我编写自定义授权过滤器,在HttpContext
中存在我的CurrentUserInfo数据。
那么我需要UserInfo在应用程序层中,其中IConsumer存在,如下面的代码。
现在哪一种方法更好:
- 添加元数据到我的请求客户端? 声明通用类并注入到已实现的IConsumer类中。
public class OptionCreateConsumer : IConsumer<OptionCreateRequest>
{
private readonly IMapper _mapper;
private readonly IUnitOfWork _unitOfWork;
public OptionCreateConsumer(IMapper mapper, IUnitOfWork unitOfWork)
{
_mapper = mapper;
_unitOfWork = unitOfWork;
}
}
在限定范围的过滤器示例中,您可以看到如何使用Send/Publish和Consume过滤器捕获Token
对象,并将其从请求客户机传递给消费者。
添加了TokenActionFilter
,以便它也有作用域,将传入的数据拉入Token
(在您的情况下,将是UserInfo
对象)。
为MassTransit配置的过滤器用于将该数据添加到报头中,以便下游消费者能够使用该报头初始化Token(或针对您的场景的UserInfo)。