Jan*_*ert 1 cookies kotlin vert.x vertx-httpclient
我正在VertX中创建cookie,并希望在用户注销后再次删除它们.
AccountController.handleLogin(vertx, router.post("/login"))
Run Code Online (Sandbox Code Playgroud)
...
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))
Run Code Online (Sandbox Code Playgroud)
现在可以在Chrome中看到该Cookie:
当我想再次删除该cookie时:
AccountController.handleLogout(vertx, router.post("/logout"))
Run Code Online (Sandbox Code Playgroud)
...
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!")
Run Code Online (Sandbox Code Playgroud)
我可以看到正在打印的消息说将删除cookie,但是当我刷新Chrome中的资源时,登录时设置的所有cookie仍然存在.包含atom-session
我这样做错了还是VertX中的一个错误?
该removeCookie方法将从请求对象中删除它,但不会从Web客户端删除cookie.为了强制将其从客户端中删除,必须将cookie与过期日期一起发回.例如,你应该这样做:
rtx.getCookie("atom-session").setMaxAge(0)
Run Code Online (Sandbox Code Playgroud)
这本身不是vert.x功能,而是Cookie的工作原理.
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |