### Axum Example with Session Management Source: https://github.com/maxcountryman/tower-sessions/blob/main/README.md This example demonstrates how to integrate Tower Sessions with an Axum web application. It uses a MemoryStore for session data and configures session expiry. The handler increments a counter stored in the session for each request. ```rust use std::net::SocketAddr; use axum::{response::IntoResponse, routing::get, Router}; use serde::{Deserialize, Serialize}; use time::Duration; use tower_sessions::{Expiry, MemoryStore, Session, SessionManagerLayer}; const COUNTER_KEY: &str = "counter"; #[derive(Default, Deserialize, Serialize)] struct Counter(usize); async fn handler(session: Session) -> impl IntoResponse { let counter: Counter = session.get(COUNTER_KEY).await.unwrap().unwrap_or_default(); session.insert(COUNTER_KEY, counter.0 + 1).await.unwrap(); format!("Current count: {}", counter.0) } #[tokio::main] async fn main() { let session_store = MemoryStore::default(); let session_layer = SessionManagerLayer::new(session_store) .with_secure(false) .with_expiry(Expiry::OnInactivity(Duration::seconds(10))); let app = Router::new().route("/", get(handler)).layer(session_layer); let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); axum::serve(listener, app.into_make_service()) .await .unwrap(); } ``` -------------------------------- ### Add Tower Sessions to Cargo.toml Source: https://github.com/maxcountryman/tower-sessions/blob/main/README.md Add this dependency to your Cargo.toml file to include the tower-sessions crate in your project. ```toml [dependencies] tower-sessions = "0.14.0" ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.