Sessions
Documentation / Sessions / Accès à la session & configuration

Accès à la session & configuration

Accès à la session dans les handlers

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

    // L'utilisateur connecté : request.user, relu en base à chaque requête
    let username = request.user.as_ref().map(|user| user.username.clone());

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

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

    // Vider la session entière (pour une déconnexion, préférez `logout`,
    // qui supprime aussi la ligne en base et renouvelle l'identifiant)
    request.session.flush().await?;

    request.render("page.html")
}

Configuration (builder — pas de variable `.env`)

Rien ne pilote les watermarks ou l'intervalle de nettoyage via .env : tout passe par le builder.

.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é avec RUNIQUE_ENV=dev)

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 (disponible directement sur le builder)
    .with_session_duration(runique::tower_sessions::cookie::time::Duration::hours(2))
    // Watermarks et intervalle de cleanup (via .middleware())
    .middleware(|m| {
        m.with_session_memory_limit(64 * 1024 * 1024, 128 * 1024 * 1024)
         .with_session_cleanup_interval(30)
    })
    .build()
    .await?;