Sessions

Accès à la session & configuration

Accès à la session dans les handlers

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

    // Écrire
    request.session.insert("cart_id", 42).await?;

    // Supprimer une clé
    request.session.remove::<i32>("cart_id").await?;

    // Détruire la session entière
    request.session.flush().await?;
}

Configuration `.env`

.middleware(|m| {
    m.with_session_memory_limit(5 * 1024 * 1024, 10 * 1024 * 1024)
     .with_session_cleanup_interval(5)
})

Sécurité des cookies par défaut

Les cookies de session sont configurés avec les attributs de sécurité suivants par défaut :

AttributValeurDescription
HttpOnlytrueToujours activé — inaccessible au JavaScript
SameSiteStrictBloque les requêtes cross-site
Securetrue en productionHTTPS uniquement (désactivé en debug)

Ces valeurs sont appliquées automatiquement par le builder et ne peuvent pas être modifiées sans toucher au framework.


Configuration via le builder

let app = RuniqueApp::builder(config)
    // Durée de vie des sessions
    .with_session_duration(time::Duration::hours(2))
    // Watermarks personnalisés
    .with_session_memory_limit(64 * 1024 * 1024, 128 * 1024 * 1024)
    // Intervalle de cleanup
    .with_session_cleanup_interval(30)
    .build()
    .await?;