mirror of
https://github.com/actix/examples
synced 2025-06-26 09:17:41 +02:00
add session ttl customization example
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
use actix_identity::Identity;
|
||||
use actix_identity::{CookieIdentityPolicy, IdentityService};
|
||||
use actix_identity::{CookieIdentityPolicy, Identity, IdentityService};
|
||||
use actix_web::{middleware, web, App, HttpResponse, HttpServer};
|
||||
use rand::Rng;
|
||||
|
||||
|
@ -5,8 +5,14 @@
|
||||
//!
|
||||
//! [User guide](https://actix.rs/docs/middleware/#user-sessions)
|
||||
|
||||
use actix_session::{storage::CookieSessionStore, Session, SessionMiddleware};
|
||||
use actix_web::{cookie::Key, middleware::Logger, web, App, HttpRequest, HttpServer, Result};
|
||||
use actix_session::{
|
||||
config::PersistentSession, storage::CookieSessionStore, Session, SessionMiddleware,
|
||||
};
|
||||
use actix_web::{
|
||||
cookie::{self, Key},
|
||||
middleware::Logger,
|
||||
web, App, HttpRequest, HttpServer, Result,
|
||||
};
|
||||
|
||||
/// simple index handler with session
|
||||
async fn index(session: Session, req: HttpRequest) -> Result<&'static str> {
|
||||
@ -39,6 +45,10 @@ async fn main() -> std::io::Result<()> {
|
||||
.wrap(
|
||||
SessionMiddleware::builder(CookieSessionStore::default(), Key::from(&[0; 64]))
|
||||
.cookie_secure(false)
|
||||
// customize session and cookie expiration
|
||||
.session_lifecycle(
|
||||
PersistentSession::default().session_ttl(cookie::time::Duration::hours(2)),
|
||||
)
|
||||
.build(),
|
||||
)
|
||||
.service(web::resource("/").to(index))
|
||||
|
@ -2,13 +2,14 @@ use std::future::{ready, Ready};
|
||||
|
||||
use actix_identity::Identity;
|
||||
use actix_web::{dev::Payload, web, Error, FromRequest, HttpRequest, HttpResponse};
|
||||
use diesel::prelude::*;
|
||||
use diesel::PgConnection;
|
||||
use diesel::{prelude::*, PgConnection};
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::errors::ServiceError;
|
||||
use crate::models::{Pool, SlimUser, User};
|
||||
use crate::utils::verify;
|
||||
use crate::{
|
||||
errors::ServiceError,
|
||||
models::{Pool, SlimUser, User},
|
||||
utils::verify,
|
||||
};
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct AuthData {
|
||||
|
@ -2,8 +2,10 @@ use actix_web::{web, HttpResponse};
|
||||
use diesel::{prelude::*, PgConnection};
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::email_service::send_invitation;
|
||||
use crate::models::{Invitation, Pool};
|
||||
use crate::{
|
||||
email_service::send_invitation,
|
||||
models::{Invitation, Pool},
|
||||
};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct InvitationData {
|
||||
|
@ -3,8 +3,10 @@ extern crate diesel;
|
||||
|
||||
use actix_identity::{CookieIdentityPolicy, IdentityService};
|
||||
use actix_web::{middleware, web, App, HttpServer};
|
||||
use diesel::prelude::*;
|
||||
use diesel::r2d2::{self, ConnectionManager};
|
||||
use diesel::{
|
||||
prelude::*,
|
||||
r2d2::{self, ConnectionManager},
|
||||
};
|
||||
use time::Duration;
|
||||
|
||||
mod auth_handler;
|
||||
|
@ -2,9 +2,11 @@ use actix_web::{web, HttpResponse};
|
||||
use diesel::prelude::*;
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::errors::ServiceError;
|
||||
use crate::models::{Invitation, Pool, SlimUser, User};
|
||||
use crate::utils::hash_password;
|
||||
use crate::{
|
||||
errors::ServiceError,
|
||||
models::{Invitation, Pool, SlimUser, User},
|
||||
utils::hash_password,
|
||||
};
|
||||
|
||||
// UserData is used to extract data from a post request by the client
|
||||
#[derive(Debug, Deserialize)]
|
||||
@ -34,8 +36,10 @@ fn query(
|
||||
password: String,
|
||||
pool: web::Data<Pool>,
|
||||
) -> Result<SlimUser, crate::errors::ServiceError> {
|
||||
use crate::schema::invitations::dsl::{id, invitations};
|
||||
use crate::schema::users::dsl::users;
|
||||
use crate::schema::{
|
||||
invitations::dsl::{id, invitations},
|
||||
users::dsl::users,
|
||||
};
|
||||
let invitation_id = uuid::Uuid::parse_str(&invitation_id)?;
|
||||
|
||||
let conn: &PgConnection = &pool.get().unwrap();
|
||||
|
Reference in New Issue
Block a user