0

ユーザーの認証後にセッション Cookie を適切に設定するメソッドを作成しています。次のように Cookie を設定しても機能しません。次のスニペットでは、'withSession' 呼び出しでエラーが発生します。

オーバーロードされたメソッド値 [withSession] は ((String, Long)) に適用できません

コード:

/**
 * Process login form submission.
 */
def authenticate = Action { implicit request =>
  loginForm.bindFromRequest.fold(
    formWithErrors => BadRequest(views.html.login(formWithErrors)),
    credentials => {
      val user = models.User.findByEmail(credentials._1)

      user match {
        case Some(u) => {
          Redirect(routes.Dashboard.index).withSession(Security.username -> u.id)
        }
        case None => Redirect(routes.Auth.login)
      }
    }
  )
}

「credentials」は、ユーザーが送信した電子メールとパスワードの単なるタプルです。「withSession」部分を取り除くと、正常に動作します。'Redirect' ステートメントをパターン マッチング コードの外に移動すると、正常に動作します。上記のように機能しないのはなぜですか?どうすれば修正できますか?

4

1 に答える 1

0

withSession は文字列、文字列を期待していると思います

http://www.playframework.org/documentation/api/2.0.3/scala/index.html#play.api.mvc.SimpleResultをご覧ください。

def withSession(session: (String, String)*): PlainResult = withSession(Session(session.toMap))
于 2012-09-12T05:27:22.743 に答える