1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-23 15:51:06 +01:00

Include cookie expiration and ttl in the identity example (#473)

This commit is contained in:
jwiesler 2024-10-08 00:57:22 +02:00 committed by GitHub
parent 370f9d3033
commit 21680e0ebe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -13,10 +13,10 @@
//! http -v --session=identity GET localhost:8080/ //! http -v --session=identity GET localhost:8080/
//! ``` //! ```
use std::io; use std::{io, time::Duration};
use actix_identity::{Identity, IdentityMiddleware}; use actix_identity::{Identity, IdentityMiddleware};
use actix_session::{storage::CookieSessionStore, SessionMiddleware}; use actix_session::{config::PersistentSession, storage::CookieSessionStore, SessionMiddleware};
use actix_web::{ use actix_web::{
cookie::Key, get, middleware::Logger, post, App, HttpMessage, HttpRequest, HttpResponse, cookie::Key, get, middleware::Logger, post, App, HttpMessage, HttpRequest, HttpResponse,
HttpServer, Responder, HttpServer, Responder,
@ -28,16 +28,25 @@ async fn main() -> io::Result<()> {
let secret_key = Key::generate(); let secret_key = Key::generate();
let expiration = Duration::from_secs(24 * 60 * 60);
HttpServer::new(move || { HttpServer::new(move || {
let session_mw = let session_mw =
SessionMiddleware::builder(CookieSessionStore::default(), secret_key.clone()) SessionMiddleware::builder(CookieSessionStore::default(), secret_key.clone())
// disable secure cookie for local testing // disable secure cookie for local testing
.cookie_secure(false) .cookie_secure(false)
// Set a ttl for the cookie if the identity should live longer than the user session
.session_lifecycle(
PersistentSession::default().session_ttl(expiration.try_into().unwrap()),
)
.build();
let identity_mw = IdentityMiddleware::builder()
.visit_deadline(Some(expiration))
.build(); .build();
App::new() App::new()
// Install the identity framework first. // Install the identity framework first.
.wrap(IdentityMiddleware::default()) .wrap(identity_mw)
// The identity system is built on top of sessions. You must install the session // The identity system is built on top of sessions. You must install the session
// middleware to leverage `actix-identity`. The session middleware must be mounted // middleware to leverage `actix-identity`. The session middleware must be mounted
// AFTER the identity middleware: `actix-web` invokes middleware in the OPPOSITE // AFTER the identity middleware: `actix-web` invokes middleware in the OPPOSITE