【发布时间】:2022-01-19 13:50:20
【问题描述】:
我正在尝试使用 rocket::http::Cookie 在 Rust(Rocket Framework 版本 0.5.0-rc.1)中的私有 Cookie 中设置过期时间。
在我读到的 Rocket add_private 文档中:
除非为给定属性设置了值,否则在添加到 self 之前会在 cookie 上设置以下默认值:
path: "/" SameSite: Strict HttpOnly: true Expires: 1 week from now
我不明白如何设置 Expires 属性。
我尝试使用 .set_expires() 创建一个新的 cookie 并设置过期时间(如 doc example 中所示),但它给了我错误:“特征 From<OffsetDateTime> 未针对 std::option::Option<time::offset_date_time::OffsetDateTime> 实现”。返回错误的代码类似于(此处的值仅用于测试目的):
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);
}
我想知道我是否必须使用 cookie crate 而不是 Rocket::http 来创建 cookie,但在这种情况下,我不能在响应处理程序中使用 CookieJar,因为它需要一个 Rocket::http::Cookie 而不是 cookie ::Cookie。
有没有其他方法可以使用 Rocket http 模块在私有 cookie 中设置过期时间或最长期限?
【问题讨论】:
标签: cookies rust rust-rocket