Logo

Sessions

MemoryStore, limites memoire, nettoyage periodique automatique.

Configuration dans le builder main.rs
RuniqueApp::builder(config)
    .middleware(|m| {
        m
        // Limites memoire : soft 5 Mo, hard 10 Mo
        .with_session_memory_limit(5 * 1024 * 1024, 10 * 1024 * 1024)

        // Nettoyage automatique toutes les 5 minutes
        .with_session_cleanup_interval(5)

        // Duree de vie des sessions (defaut : 24h)
        .with_session_duration(Duration::hours(12))
    })
Configuration dans le builder main.rs
RuniqueApp::builder(config)
    .middleware(|m| {
        m
        // Limites memoire : soft 5 Mo, hard 10 Mo
        .with_session_memory_limit(5 * 1024 * 1024, 10 * 1024 * 1024)

        // Nettoyage automatique toutes les 5 minutes
        .with_session_cleanup_interval(5)

        // Duree de vie des sessions (defaut : 24h)
        .with_session_duration(Duration::hours(12))
    })
Lecture / ecriture dans un handler handler
pub async fn mon_handler(mut request: Request) -> AppResult<Response> {
    // Lire
    let user_id = request.session
        .get::<i32>("user_id").await
        .ok().flatten();

    // Ecrire
    request.session.insert("user_id", 42).await.ok();
    request.session.insert("username", "alice").await.ok();

    // Supprimer une cle
    request.session.remove::<i32>("user_id").await.ok();

    // Invalider la session entiere (deconnexion)
    request.session.flush().await.ok();

    request.render("profil.html")
}
Lecture / ecriture dans un handler handler
pub async fn mon_handler(mut request: Request) -> AppResult<Response> {
    // Lire
    let user_id = request.session
        .get::<i32>("user_id").await
        .ok().flatten();

    // Ecrire
    request.session.insert("user_id", 42).await.ok();
    request.session.insert("username", "alice").await.ok();

    // Supprimer une cle
    request.session.remove::<i32>("user_id").await.ok();

    // Invalider la session entiere (deconnexion)
    request.session.flush().await.ok();

    request.render("profil.html")
}