Play Framework で新しいセッションを作成しようとしていますが、うまくいきません。
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 によると、暗黙の要求には null の Cookie と null のセッションがあります。何が起きてる?
それが役立つ場合、これは 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)
}
}))
}