VertX Web不删除Cookie
我在VertX中创建了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现在可以看到这个cookie:
当我想再次删除该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!")
我可以看到正在打印的消息,说明cookie将被删除,但当我在Chrome中刷新资源时,所有登录时设置的cookie仍然存在。 包括atom-session
我在做这个错误还是这是一个VertX的错误?
removeCookie
方法将从请求对象中删除它,但不会从Web客户端中删除一个cookie。 为了强制将其从客户端删除,必须将cookie发送回到过期日期。 比如你应该这样做:
rtx.getCookie("atom-session").setMaxAge(0)
这不是一个vert.x功能本身,但如何工作。