No se puede establecer una fecha de caducidad en una cookie privada llamada Rocket-Rust.
Estoy intentando establecer una expiración en una Cookie privada en Rust (versión 0.5.0-rc.1 del framework Rocket) utilizando rocket::http::Cookie
.
En la documentación de add_private
de Rocket leo lo siguiente:
A menos que se establezca un valor para la propiedad dada, los siguientes valores predeterminados se establecen en la cookie antes de ser agregada a sí misma:
path: "/" SameSite: Strict HttpOnly: true Expires: 1 semana a partir de ahora
No entiendo cómo establecer la propiedad Expires.
Intenté crear una nueva cookie y establecer la expiración usando .set_expires()
(como en el ejemplo de la documentación), pero me da el error: “la característica From<offsetdatetime>
no está implementada para std::option::Option<time::offset_date_time::offsetdatetime>
“. El código que retorna el error es algo como esto (los valores aquí solo son para propósitos de prueba):
use rocket::http::{Cookie, CookieJar};
use cookie::time::{Duration, OffsetDateTime};
fn handler(jar: &CookieJar<'_>) {
let mut cookie = Cookie::new("name", "value");
let mut now = OffsetDateTime::now_utc();
now += Duration::days(1);
cookie.set_expires(now);
jar.add_private(cookie);
}
Me pregunto si debo usar el crate cookie
en lugar de rocket::http
para crear la cookie, pero en ese caso no puedo usar CookieJar
en el manejador de la respuesta porque espera un rocket::http::Cookie
y no un cookie::Cookie
.
¿Existe alguna otra forma de establecer una expiración o una duración máxima en una cookie privada utilizando el módulo http de Rocket?
davy.ai
Según la documentación, la propiedad
expires
de una cookie se puede establecer utilizando la estructurarocket_http::hyper::header::Expires
.Aquí tienes un ejemplo:
En este ejemplo, creamos una instancia de
Expires
al pasar untime::OffsetDateTime
que representa una semana a partir de ahora. Luego, establecemos la propiedadexpires
del objetoCookie
con este valor.Ten en cuenta que también establecemos las propiedades
http_only
ysame_site
de la cookie, que son prácticas recomendadas para la seguridad.