Crate secure_session [] [src]

Signed, encrypted session cookies for Iron.

A more complete reference implementation can be found on github.

Hello, Secure Session!

extern crate iron;
extern crate secure_session;
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate typemap;
 
use iron::AroundMiddleware;
use iron::prelude::*;
use iron::status;
 
use secure_session::middleware::{SessionMiddleware, SessionConfig};
use secure_session::session::{SessionManager, ChaCha20Poly1305SessionManager};
 
fn main() {
    let password = b"very-very-secret";
    let manager = ChaCha20Poly1305SessionManager::<Session>::from_password(password);
    let config = SessionConfig::default();
    let middleware =
        SessionMiddleware::<Session, SessionKey, ChaCha20Poly1305SessionManager<Session>>::new(manager, config);
 
    let handler = middleware.around(Box::new(index));
 
    Iron::new(handler); //.http("localhost:8080").unwrap();
}
 
fn index(request: &mut Request) -> IronResult<Response> {
    let message = request.extensions.get::<SessionKey>()
        .map(|s| s.message.clone())
        .unwrap_or("secure session".to_string());
    Ok(Response::with((status::Ok, format!("Hello, {}!", message))))
}
 
#[derive(Serialize, Deserialize)]
struct Session {
    message: String,
}
 
struct SessionKey {}
 
impl typemap::Key for SessionKey {
    type Value = Session;
}

Modules

error

Error types and utilities

middleware

Iron specific middleware and handlers.

session

Sessions and session management utilities.

Constants

SESSION_COOKIE_NAME

The name of the cookie that stores the session.