Scala .withSession()在播放2.0时不工作

Scala .withSession()在播放2.0时不工作,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我正在尝试在Play框架中创建一个新会话,但它似乎不起作用 在获得OpenID结果之后,我想将它们重定向回索引(无论如何,现在是这样),以及它们刚刚返回的OpenID信息 Redirect(routes.Application.index).withSession( "id" -> info.id, "email" -> info.attributes.get("email").getOrElse("unknown@unknown.co

我正在尝试在Play框架中创建一个新会话,但它似乎不起作用

在获得OpenID结果之后,我想将它们重定向回索引(无论如何,现在是这样),以及它们刚刚返回的OpenID信息

Redirect(routes.Application.index).withSession(
            "id" -> info.id,
            "email" -> info.attributes.get("email").getOrElse("unknown@unknown.com"),
            "timestamp" -> (System.currentTimeMillis() / 1000L).toString)
这将调用以下函数:

def index = Action { implicit request ⇒
    Ok(html.index(request))
  }
然而,根据Eclipse,隐式请求具有空cookie和空会话。这是怎么回事

如果有帮助,这是OpenID信息的完整功能:

def openIDCallback = Action { implicit request ⇒
    AsyncResult(
      OpenID.verifiedId.extend(_.value match {
        case Redeemed(info) ⇒ {
          Redirect(routes.Application.index).withSession(
            "id" -> info.id,
            "email" -> info.attributes.get("email").getOrElse("unknown@unknown.com"),
            "timestamp" -> (System.currentTimeMillis() / 1000L).toString)
        }
        case Thrown(t) ⇒ {
          // Here you should look at the error, and give feedback to the user
          Redirect(routes.Application.index)
        }
      }))
  }

因此,显然Eclipse调试器没有意识到某些值是惰性的。它只是说它们是空的。这意味着,会话看起来是空的,即使它不是一经调用就被调用


真正的问题是,在应该使用会话的代码部分,我使用的是request.cookies.get()而不是request.Session.get()。尽管会话是一个cookie,但它是一个具有自己的特殊val的命名cookie。因此,我的代码在不同的位置中断,原因也不同。

因此显然Eclipse调试器没有意识到某些值是惰性的。它只是说它们是空的。这意味着,会话看起来是空的,即使它不是一经调用就被调用

真正的问题是,在应该使用会话的代码部分,我使用的是request.cookies.get()而不是request.Session.get()。尽管会话是一个cookie,但它是一个命名cookie,具有自己的特殊val。因此,我的代码在不同的位置中断,原因也不同