Middleware & Security

Sessions (middleware)

Session durations

DurationUse case
Duration::minutes(30)Short sessions (security)
Duration::hours(2)Standard usage
Duration::hours(24)Runique default
Duration::days(7)"Remember me"

Configuration

// Custom session duration
let app = RuniqueApp::builder(config)
    .with_session_duration(time::Duration::hours(2))
    .build()
    .await?;

Custom store (production)

// Example with a Redis store
let app = RuniqueApp::builder(config)
    .middleware(|m| m.with_session_store(RedisStore::new(client)))
    .build()
    .await?;

Accessing session data in handlers

pub async fn dashboard(request: Request) -> AppResult<Response> {
    // Read a session value
    let user_id: Option<i32> = request.session
        .get("user_id")
        .await
        .ok()
        .flatten();

    // Write a value
    let _ = request.session.insert("last_visit", "2026-02-06").await;
}

For the full session system with watermarks, see Sessions.