Sessions

MemoryStore, memory limits, automatic periodic cleanup.

● ● ●
RuniqueApp::builder(config)
    .middleware(|m| {
        m
        // Memory limits: soft 5 MB, hard 10 MB
        .with_session_memory_limit(5 * 1024 * 1024, 10 * 1024 * 1024)

        // Automatic cleanup every 5 minutes (in seconds)
        .with_session_cleanup_interval(300)

        // Session lifetime (default: 24h)
        .with_session_duration(Duration::hours(12))
    })
pub async fn my_handler(mut request: Request) -> AppResult<Response> {
    // Read
    let cart_id = request.session
        .get::<i32>("cart_id").await
        .ok().flatten();

    // The signed-in user: request.user, read from the database on every request
    let username = request.user.as_ref().map(|user| user.username.clone());

    // Write
    request.session.insert("cart_id", 42).await.ok();
    request.session.insert("theme", "dark").await.ok();

    // Delete a key
    request.session.remove::<i32>("cart_id").await.ok();

    // Invalidate the entire session (logout)
    request.session.flush().await.ok();

    request.render("profile.html")
}