在 FromRequest 实现中获取应用状态

Get the app state in FromRequest implementation

我有一个 actix 网络服务器,我想在 FromRequest 实现中获取我的服务器的状态。

我试过类似的东西:

impl FromRequest for User {
    type Config = ();
    type Error = Error;
    type Future = Pin<Box<dyn Future<Output = Result<User, actix_web::Error>>>>;

    fn from_request(req: &HttpRequest, pl: &mut Payload, state: web::Data<State>) -> Self::Future {
       ...
    }
}

当然,这行不通,因为 from_request 只要求 2 个参数,而不是 3 个。

你可以这样做:

fn from_request(req: &HttpRequest, pl: &mut Payload) -> Self::Future {
   let _state = req.app_data::<Data<State>>();
   ....
}

查看 app_data

的文档