Я пока не могу отменить сеанс через конечную точку 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
}))
}
Файл cookie добавляется при успешном вызове POST '/signup' или POST '/login'.
В инструментах разработки Chrome вы можете увидеть, что файл cookie устанавливается в ответе POST '/login'.
Затем я выхожу из системы, используя POST '/logout', и получаю такой ответ:
В этот момент я делаю жесткое обновление. После этого вызывается GET '/get-profile', который не должен работать при выходе из системы, но по-прежнему отправляет cookie в заголовках запроса.
Итак, кажется, что файл cookie сеанса не удаляется должным образом, есть ли правильный способ сделать это в Rocket?