到目前为止,我无法通过logout
在 Rocket 中创建的端点取消设置会话。
下面是创建 cookie 的代码:
impl AuthToken {
pub fn from_string(string: String) -> Self {
AuthToken(string)
}
pub fn to_string_ptr(&self) -> &String {
&self.0
}
pub fn as_cookie(&self) -> Cookie<'static> {
let clone = self.to_string();
Cookie::build("session-token", clone)
.path("/")
.same_site(SameSite::Strict)
.http_only(true)
.finish()
}
}
这是试图破坏它的代码
#[post("/logout")]
pub fn logout(mut cookies: Cookies) -> APIResponse {
cookies.remove(Cookie::named("session-token"));
ok().data(json!({
"success": true
}))
}
当 POST '/signup' 或 POST '/login' 被成功调用时,cookie 会被添加。
在 Chrome devtools 中,您可以看到 POST '/login' 响应中设置的 cookie。
然后我使用 POST '/logout' 注销,并得到以下响应:
在这一点上,我进行了一次硬刷新。之后 GET '/get-profile' 被调用,这在注销时不应该工作,但它仍然在请求标头中发送 cookie。
所以似乎会话cookie没有被正确取消,在Rocket中有没有正确的方法来做到这一点?