add a readme
This commit is contained in:
parent
2aaa877cb5
commit
d195aace48
33
README.md
Normal file
33
README.md
Normal file
@ -0,0 +1,33 @@
|
||||
# Sessions for Rocket.rs
|
||||
|
||||
Adding cookie-based sessions to a rocket application is extremely simple:
|
||||
|
||||
```rust
|
||||
#![feature(proc_macro_hygiene, decl_macro)]
|
||||
#[macro_use] extern crate rocket;
|
||||
|
||||
use rocket_session::Session;
|
||||
use std::time::Duration;
|
||||
|
||||
fn main() {
|
||||
rocket::ignite()
|
||||
.attach(Session::fairing(Duration::from_secs(3600)))
|
||||
.mount("/", routes![index])
|
||||
.launch();
|
||||
}
|
||||
|
||||
#[get("/")]
|
||||
fn index(session: Session) -> String {
|
||||
let mut count: usize = session.get_or_default("count");
|
||||
count += 1;
|
||||
session.set("count", count);
|
||||
|
||||
format!("{} visits", count)
|
||||
}
|
||||
```
|
||||
|
||||
Anything serializable can be stored in the session, just make sure to unpack it to the right type.
|
||||
|
||||
The session driver internally uses `serde_json::Value` and the `json_dotpath` crate.
|
||||
Therefore, it's possible to use dotted paths and store the session data in a more structured way.
|
||||
|
||||
@ -40,12 +40,9 @@ impl<'a, 'r> FromRequest<'a, 'r> for &'a SessionID {
|
||||
|
||||
fn from_request(request: &'a Request<'r>) -> Outcome<Self, (Status, Self::Error), ()> {
|
||||
Outcome::Success(request.local_cache(|| {
|
||||
println!("get id");
|
||||
if let Some(cookie) = request.cookies().get(SESSION_ID) {
|
||||
println!("from cookie");
|
||||
SessionID(cookie.value().to_string()) // FIXME avoid cloning (cow?)
|
||||
} else {
|
||||
println!("new id");
|
||||
SessionID(
|
||||
rand::thread_rng()
|
||||
.sample_iter(&rand::distributions::Alphanumeric)
|
||||
@ -158,7 +155,7 @@ struct SessionFairing {
|
||||
impl Fairing for SessionFairing {
|
||||
fn info(&self) -> Info {
|
||||
Info {
|
||||
name: "Session Fairing",
|
||||
name: "Session",
|
||||
kind: fairing::Kind::Attach | fairing::Kind::Response,
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user