简单表格接收未经授权

时间:2017-03-24 22:09:57

标签: scala playframework

尝试使用Scala Play进行简单的表单发布,收到未经授权的错误。

这是我的routes文件:

POST     /receiveForm              controllers.HomeController.receiveForm

这是我的HomeController.scala文件:

def receiveForm = Action { implicit request =>
    println("receiveForm method")
    Ok(views.html.index())
}

这是我的index.scala.html

@helper.form(routes.HomeController.receiveForm()) {
    <input type="submit" name="submit" />
}

查看CSRF,但无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

如果未找到或无效的CSRF令牌,您确实可以从play的CSRF过滤器获得Unauthorized响应。

您是否按照here所述启用了CSRF过滤器?我假设你做到了。然后会确认您收到此错误,因为您没有发布预期的CSRF令牌。以下是修改表单的方法,以便在帖子的查询字符串中包含所需的标记:

@import helper._

@form(CSRF(routes.HomeController.receiveForm())) {
  <input type="submit" name="submit" />
}

我还假设您最初通过GET请求显示表单。这是创建初始令牌所必需的,如here所述。其余部分应保持原样。

有关将令牌添加到表单的其他方法(例如,作为输入字段),请参阅https://playframework.com/documentation/2.5.x/ScalaCsrf#Getting-the-current-token