Scala Play Framework中的重载方法错误

时间:2012-09-12 00:35:02

标签: scala playframework compiler-errors playframework-2.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)
      }
    }
  )
}

'凭证'只是用户提交的电子邮件和密码的元组。如果我摆脱'withSession'部分,那么它运行正常。如果我从模式匹配代码中移出“重定向”语句,那么工作正常。为什么它不能像我上面那样工作,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我认为withSession需要一个String,String

查看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))