Я пытаюсь реализовать веб-API, используя Iron в качестве практического упражнения. Мой сеанс представляет собой следующую структуру, которая будет закодирована как JWT. Каждый раз, когда я получаю запросы от клиентов, некоторым обработчикам потребуется доступ к user_id
;
#[derive(Serialize, Deserialize)]
struct Session {
session_id: i32,
user_id: Option<i32>,
expiration: u64,
}
Есть несколько способов сделать это, но я не знаю самого идиоматичного и наименее подробного. Я думал что-то вроде:
fn handle(&self, req: &mut Request) -> IronResult<Response> {
let session = match get_session(req) {
Err(err) => return Ok(Response::with((status::BadRequest, err.description()))),
Ok(session) => session,
};
Ok(Response::with((status::Ok, err.description())))
}
Но таким образом мне понадобится этот фрагмент на нескольких конечных точках.
Я мог бы использовать промежуточное программное обеспечение, но я не знаю, как перехватить значение структуры между промежуточным программным обеспечением.
for<'r, 'r, 'r> std::ops::Fn<(&'r mut iron::Request<'r, 'r>,)>
не реализован дляfile::FileDelete
- person Danilo   schedule 09.11.2017