rocket-session-store

Crates.iorocket-session-store
lib.rsrocket-session-store
version0.2.0
sourcesrc
created_at2022-02-05 21:24:38.467753
updated_at2022-04-01 20:59:37.631321
descriptionA rust session library that can use a custom store.
homepagehttps://github.com/Aurora2500/rocket-session-store
repositoryhttps://github.com/Aurora2500/rocket-session-store
max_upload_size
id527587
size23,006
Aurora (Aurora2500)

documentation

README

rocket-session-store

rocket-session-store is a library for the rocket web framework. It manages sessions by using cookies and a customizable store.

Quickstart

Using this library consists of two steps:

  1. Setting up the session store fairing when building the rocket.
  2. Using the session request guard.
use rocket_session_store::{
	memory::MemoryStore,
	SessionStore,
	SessionResult,
	Session,
	CookieConfig,
};

use rocket::{
	Rocket,
	get,
	routes,
	launch,
};

use std::time::Duration;

// Using the `Session` request guard

#[get("/")]
async fn index(session: Session<'_, String>) -> SessionResult<String> {
	let name: Option<String> = session.get().await?;
	if let Some(name) = name {
		Ok(format!("Hello, {}!", name))
	} else {
		Ok("Hello, world!".into())
	}
}

#[launch]
fn rocket() -> _ {
	// Instance a store that fits your needs and wrap it in a Box in SessionStore.
	let memory_store: MemoryStore::<String> = MemoryStore::default();
	let store: SessionStore<String> = SessionStore {
		store: Box::new(memory_store),
		name: "token".into(),
		duration: Duration::from_secs(3600 * 24 * 3),
		// The cookie config is used to set the cookie's path and other options.
		cookie: CookieConfig::default(),
	};

	// Attach it to a rocket by calling `fairing()`
	rocket::build().attach(store.fairing()).mount("/", routes![index])
}

Contributing

If you wish to contribute, please read CONTRIBUTING.md.

Commit count: 12

cargo fmt