我不想为我的所有请求启用CSRF过滤器。 但是想以我的形式使用它。 所以我在控制器中使用CSRFAddToken和CSRFCheck:
public class Contact extends RealmObject {
@PrimaryKey
private String id;
private String phoneNumber;
private String name;
public String getPhoneNumber() {
return phoneNumber;
}
public String getUserId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setUserId(String id) {
this.id = id;
}
}
在视图中我只是使用
def change(lng: String) = checkToken {
Action { implicit request =>
registerForm.bindFromRequest.fold(
{ formWithErrors =>
Ok(Json.toJson(JsObject(Map("status" -> JsString("error"), "message" -> JsString(messagesApi.translate("register.all_fields_required", Seq()).get)))))
},
value =>
[Code was cutted]
)
}
}
def getCurrent(lng: String) = addToken {
Action { implicit request =>
Ok(views.html.profile_edit_popup())
}
}
将CSRF添加到表单中 然后我使用Ajax获取getCurrent操作并获取表单的html,并在保存时使用Ajax发布它以更改操作。问题是我得到了
CSRF令牌检查失败
提交错误。即便如此,我在表格中看到了CSRF隐藏字段。我做错了什么?