ezidam: store access token in cookie
This commit is contained in:
parent
1b2a9d1af7
commit
72c67a7a82
2 changed files with 13 additions and 4 deletions
|
|
@ -114,11 +114,20 @@ pub async fn redirect_page(
|
||||||
// TODO: get user roles
|
// TODO: get user roles
|
||||||
let roles = vec![];
|
let roles = vec![];
|
||||||
|
|
||||||
|
// Access token duration in minutes
|
||||||
|
let access_token_duration = 15;
|
||||||
|
|
||||||
// Create jwt, sign and serialize
|
// Create jwt, sign and serialize
|
||||||
let jwt = JwtClaims::new(home_page.clone(), app.id().as_ref(), &user, roles)
|
let jwt = JwtClaims::new(home_page.clone(), app.id().as_ref(), &user, roles)
|
||||||
.sign_serialize(&private_key)?;
|
.sign_serialize(&private_key, access_token_duration)?;
|
||||||
|
|
||||||
// TODO: store tokens in secure, http only cookies
|
// Add jwt as a cookie
|
||||||
|
let mut cookie = Cookie::new("access_token", jwt);
|
||||||
|
cookie.set_secure(true);
|
||||||
|
cookie.set_http_only(true);
|
||||||
|
cookie.set_same_site(SameSite::Strict);
|
||||||
|
cookie.set_max_age(Duration::minutes(access_token_duration));
|
||||||
|
cookie_jar.add(cookie);
|
||||||
|
|
||||||
transaction.commit().await?;
|
transaction.commit().await?;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,13 +43,13 @@ impl JwtClaims {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sign_serialize(self, key: &PrivateKey) -> Result<String, Error> {
|
pub fn sign_serialize(self, key: &PrivateKey, duration_minutes: i64) -> Result<String, Error> {
|
||||||
let header = Header::default().with_key_id(key.id());
|
let header = Header::default().with_key_id(key.id());
|
||||||
|
|
||||||
let claims = Claims::<Self>::new(self);
|
let claims = Claims::<Self>::new(self);
|
||||||
|
|
||||||
// Set duration
|
// Set duration
|
||||||
let duration = Duration::minutes(15);
|
let duration = Duration::minutes(duration_minutes);
|
||||||
let time_options = TimeOptions::default();
|
let time_options = TimeOptions::default();
|
||||||
let claims = claims.set_duration_and_issuance(&time_options, duration);
|
let claims = claims.set_duration_and_issuance(&time_options, duration);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue