parent
2aaa877cb5
commit
d195aace48
@ -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. |
||||||
|
|
Loading…
Reference in new issue