我正在尝试为我的Actix应用程序编写一个身份验证中间件。当在中间件中验证请求时,我调用数据库来检索必要的用户数据以验证传入的请求。一旦请求被授权,我希望能够将此用户数据传递给处理程序,因为这将允许我避免对同一数据进行两次查询。
我找不到解决办法。到目前为止,我能找到的最好的建议是"set a request extension"。似乎没有任何例子,也有太少的文档围绕这一点,以工作在这里做什么。
我正在尝试为我的Actix应用程序编写一个身份验证中间件。当在中间件中验证请求时,我调用数据库来检索必要的用户数据以验证传入的请求。一旦请求被授权,我希望能够将此用户数据传递给处理程序,因为这将允许我避免对同一数据进行两次查询。
我找不到解决办法。到目前为止,我能找到的最好的建议是"set a request extension"。似乎没有任何例子,也有太少的文档围绕这一点,以工作在这里做什么。
1条答案
按热度按时间cyvaqqii1#
您可以通过扩展将数据从中间件(服务)传递到处理程序。
首先,您必须插入扩展(在服务中)。
HttpMessage
trait是为ServiceRequest
结构体实现的,提供了extensions_mut()
功能。它必须是可变的,因为您将插入新的扩展。它可能看起来像这样:
然后你必须为你的数据结构实现
FromRequest
trait。然后你就可以在handler中使用它了。