routeにmiddlewareをくっつけます。
Requestのheadersからcookieを取得します。
#[tokio::main] async fn main() { let app = axum::Router::new() .route("/", axum::routing::get(handle_index)) .layer(middleware::from_fn(my_middleware)); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); axum::serve(listener, app).await.unwrap(); } // async fn my_middleware(req: Request, next: Next,) -> impl IntoResponse { let mut session_token = req .headers() .get_all("Cookie") .iter() .filter_map(|cookie| { cookie .to_str() .ok() .and_then(|cookie| cookie.parse::<cookie::Cookie>().ok()) }) .find_map(|cookie| { (cookie.name() == "hoge".to_string()).then(move || cookie.value().to_owned()) }); println!("{:?}", &session_token); let cookies = req.headers().get("cookie"); println!("{:?}", &cookies); let mut res = next.run(req).await; res }
Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.60s
Running `target/debug/axum`
Some(“value”)
Some(“hoge=value”)
hoge=value; Max-Age=600
ほう、なるほど。middlewareにリダイレクトを追加したい。