2016-11-21 4 views
0

Я создаю файлы cookie в VertX и хочу удалить их снова после выхода из системы.VertX Web не удаляет файлы cookie

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)) 

Это печенье теперь можно увидеть в Chrome:

enter image description here

Когда я хочу, чтобы удалить этот печенье снова:

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?

ответ

5

Метод removeCookie удалит его из объекта запроса, но не удалит файл cookie с веб-клиента. Чтобы принудительно удалить его из клиента, cookie должен быть отправлен обратно с датой истечения срока действия. Например, вы должны:

rtx.getCookie("atom-session").setMaxAge(0) 

Это не функция vert.x как таковая, а как работает куки.

+0

Это действительно работает, не думал о том, чтобы установить его возраст на 0. Я думал, что установка значения null может работать, но это просто выбрасывает исключение нулевого указателя. Спасибо за этот ответ! –

Смежные вопросы