【问题标题】:How do I read the value of a cookie in the Play-Framework with Scala?如何使用 Scala 在 Play-Framework 中读取 cookie 的值?
【发布时间】:2011-06-06 08:26:40
【问题描述】:

如何在使用 Scala 的 Play-Framework 中读取控制器中 cookie 的值?

在我的控制器中,我有这个:

println(Http.Request.current().headers.get("cookie"))

输出是这样的:

[csrftoken=011d7cfe84915ee9897c8c6079d49d5a; test=value]

我希望有一种更好的方法来访问“test”的值而不是解析字符串.. ;)

【问题讨论】:

    标签: scala cookies playframework


    【解决方案1】:

    您可以使用 HTTP 请求上的 cookie 对象访问 cookie,而不是从标头中以原始格式获取它。查看 API here 了解更多信息。

    你应该能够做到:

    Http.Request.current().cookies.get("test")

    【讨论】:

    • 这是和request.cookies.get("test")不同还是一样?
    • 几乎一样。除非,如果您无权访问请求对象,则可以使用Http.Request.current() 获取它。 OP 没有指定他可以访问请求对象,因此继续使用他使用的相同语法会更安全。
    • 在 Play + Scala 中我认为默认情况下我没有范围内的请求对象。 @Codemwnci 的回答效果很好;谢谢!
    • @pyrony:是的,我使用了我发布的评论中的代码。我使用 Scala + Play。
    【解决方案2】:

    您可以使用 scala 模板获取 cookie 值 @request.cookies.get("email").value.

    如果你想检查它不为空, @if(request.cookies.get("email") != null) {}

    【讨论】:

      【解决方案3】:

      我正在使用带有 Scala 的 Play 2.6.19,我获取如下;

      val leadToken = request.cookies.get("lead_token") match {
       case Some(cookie) => cookie.value
       case None => ""
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多