Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c5a9767881 | ||
|
|
89bebc6b03
|
||
|
|
4046e7f185
|
@@ -0,0 +1,7 @@
|
||||
# [0.2.2]
|
||||
|
||||
- Update dependencies
|
||||
|
||||
# [0.2.1]
|
||||
|
||||
- change from `thread_rng` to `OsRng` for better session ID entropy
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "rocket_session"
|
||||
version = "0.2.0"
|
||||
version = "0.2.2"
|
||||
authors = ["Ondřej Hruška <ondra@ondrovo.com>"]
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
@@ -16,6 +16,6 @@ categories = [
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.7.2"
|
||||
rocket = "0.4.2"
|
||||
parking_lot = "0.10.0"
|
||||
rand = "0.8"
|
||||
rocket = "0.4"
|
||||
parking_lot = "0.11"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#[macro_use]
|
||||
extern crate rocket;
|
||||
|
||||
use rocket::request::Form;
|
||||
use rocket::response::content::Html;
|
||||
use rocket::response::Redirect;
|
||||
|
||||
@@ -30,38 +29,23 @@ fn index(session: Session) -> Html<String> {
|
||||
<ul>
|
||||
"#,
|
||||
);
|
||||
|
||||
session.tap(|sess| {
|
||||
for (n, dog) in sess.iter().enumerate() {
|
||||
page.push_str(&format!(
|
||||
r#"
|
||||
<li>🐶 {} <a href="/remove/{}">Remove</a></li>
|
||||
"#,
|
||||
r#"<li>🐶 {} <a href="/remove/{}">Remove</a></li>"#,
|
||||
dog, n
|
||||
));
|
||||
}
|
||||
});
|
||||
|
||||
page.push_str(
|
||||
r#"
|
||||
</ul>
|
||||
"#,
|
||||
);
|
||||
|
||||
page.push_str("</ul>");
|
||||
Html(page)
|
||||
}
|
||||
|
||||
#[derive(FromForm)]
|
||||
struct AddForm {
|
||||
name: String,
|
||||
}
|
||||
|
||||
#[post("/add", data = "<dog>")]
|
||||
fn add(session: Session, dog: Form<AddForm>) -> Redirect {
|
||||
fn add(session: Session, dog: String) -> Redirect {
|
||||
session.tap(move |sess| {
|
||||
sess.push(dog.into_inner().name);
|
||||
sess.push(dog);
|
||||
});
|
||||
|
||||
Redirect::found("/")
|
||||
}
|
||||
|
||||
@@ -72,6 +56,5 @@ fn remove(session: Session, dog: usize) -> Redirect {
|
||||
sess.remove(dog);
|
||||
}
|
||||
});
|
||||
|
||||
Redirect::found("/")
|
||||
}
|
||||
|
||||
+3
-2
@@ -1,5 +1,5 @@
|
||||
use parking_lot::{Mutex, RwLock, RwLockUpgradableReadGuard};
|
||||
use rand::Rng;
|
||||
use rand::{Rng, rngs::OsRng};
|
||||
|
||||
use rocket::{
|
||||
fairing::{self, Fairing, Info},
|
||||
@@ -176,9 +176,10 @@ where
|
||||
|
||||
// Find a new unique ID - we are still safely inside the write guard
|
||||
let new_id = SessionID(loop {
|
||||
let token: String = rand::thread_rng()
|
||||
let token: String = OsRng
|
||||
.sample_iter(&rand::distributions::Alphanumeric)
|
||||
.take(store.config.cookie_len)
|
||||
.map(char::from)
|
||||
.collect();
|
||||
|
||||
if !store_wg.sessions.contains_key(&token) {
|
||||
|
||||
Reference in New Issue
Block a user