VertX Web не удаляет куки
Я создаю файлы cookie в VertX и хочу удалить их снова, как только пользователь выйдет из системы.
AccountController.handleLogin(vertx, router.post("/login"))
...
fun handleLogin(vertx: Vertx, route: Route) {
route.handler { rtx ->
rtx.request().bodyHandler { btx ->
vertx.executeBlocking<Login>({
it.complete(AccountController.login(Json.decodeValue(String(btx.bytes), Login::class.java)))
}, {
if (it.succeeded()) {
// set some cookies
rtx.addCookie(Cookie.cookie("atom-session", it.result().session).setHttpOnly(true).setSecure(secure))
Этот cookie теперь можно увидеть в Chrome:
Когда я хочу снова удалить этот файл cookie:
AccountController.handleLogout(vertx, router.post("/logout"))
...
fun handleLogout(vertx: Vertx, route: Route) {
route.handler { rtx ->
rtx.request().bodyHandler { btx ->
vertx.executeBlocking<Logout>({
val logout = Json.decodeValue(String(btx.bytes), Logout::class.java)
it.complete(AccountController.logout(logout))
}, {
if (it.succeeded()) {
log.info("Cookies Will No Be Removed ...")
rtx.removeCookie("atom-session")
log.info("DONE!")
Я вижу распечатанные сообщения о том, что куки будут удалены, но когда я обновляю ресурсы в Chrome, все куки, которые были установлены при входе в систему, все еще там. в том числе atom-session
Я делаю это неправильно или это ошибка в VertX?
1 ответ
Решение
removeCookie
Метод удалит его из объекта запроса, но это не удалит cookie из веб-клиента. Чтобы принудительно удалить его с клиента, куки должны быть отправлены обратно с датой истечения срока действия. Например, вы должны сделать:
rtx.getCookie("atom-session").setMaxAge(0)
Это не функция vert.x как таковая, а то, как работают куки.