【问题标题】:How to remove a (session) cookie in Play Framework 2.5.x /Java如何在 Play Framework 2.5.x /Java 中删除(会话)cookie
【发布时间】:2016-11-02 00:40:21
【问题描述】:

我正在使用 Play 2.5.3。当用户执行某些特定操作时,我想删除会话 cookie。

我的饼干是这样的。

// Cookie: name, value, maximum age, path, domain, secure, http only Cookie("name", somestring, null, "/", somedomain, false, false)

我已经尝试过 Play 文档显示的内容。

request().discardCookie(name, path, domain)

事实证明它不起作用。接下来我应该尝试什么。 任何帮助将不胜感激。

【问题讨论】:

    标签: java cookies playframework session-cookies


    【解决方案1】:

    你需要使用

    response().discardCookie("name");
    

    【讨论】:

      【解决方案2】:

      在 Scala 中,您需要传递 DiscardingCookie 实例,如下所示: response.discardingCookies(DiscardingCookie("cookie_name"))

      看看Java api中可能有类似的类。

      【讨论】:

        【解决方案3】:

        从 play 2.8 开始,Http.Context 已停止使用。您现在可以改为使用

        return ok().discardingCookies("COOKIE_NAME");
        

        因此,基本上对响应的任何更改都需要应用于您的函数直接返回的结果对象,而不是与旧的 response() 方法进行交互。

        【讨论】:

          【解决方案4】:

          我认为你应该使用

          response.removeCookie(keyName);
          

          【讨论】:

          • 我试过了,但是这个版本的 Play 或 play.mvc.HTTP 包不支持语法。
          【解决方案5】:
          Cookie c = new Cookie("name", "", 0, somepath, somedomain, false, false);
          return ok().withCookies(c);
          

          事实证明,↑成功了。

          尝试将值设置为 "",并将 maxAge 设置为 0。 设置其他所有内容

          新的 cookie 应该替换旧的。并且因为 maxAge 为 0 而消失了。

          希望这可以帮助某人。哈哈

          【讨论】:

          • 最好使用response().discardCookie("name"); 而不是放置cookie maxAge attr。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-18
          • 1970-01-01
          • 2010-11-08
          • 2022-01-03
          • 2012-09-01
          • 1970-01-01
          • 2015-04-03
          相关资源
          最近更新 更多