2016-11-21 20 views
0

私はVertXでクッキーを作成しています。ユーザーが一度ログアウトすると、再びクッキーを削除します。クッキーは、今Chromeで見ることができるVertX Webでクッキーを削除しない

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

:私は再びそのクッキーを削除する

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メソッドは要求オブジェクトからそれを削除しますが、Webクライアントからクッキーを削除しません。クライアントから強制的に削除されるためには、有効期限付きのクッキーを返送する必要があります。たとえば、次のようにする必要があります。

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

これは、本来、vert.xの機能ではなく、クッキーの仕組みです。

+0

それは本当に機能しますが、年齢を0に設定することについては考えていませんでした。値をnullに設定すると効果があるかもしれないと思っていましたが、それはちょうどnullポインタ例外を投げていました。その答えをありがとう! –

関連する問題