如何在2.5.4中实现CSRFfilters?play文档是错误的(没有编译,在play 2.5.4javaAPI下也不能编译),这里的示例没有编译(Play 2.5 disable csrf protection for some requests)。
2.5javaAPI有一个CRSFFilter类,但它不是EssentialFilter的子类,因此不能添加到EssentialFilters数组中,因为它是错误的类型。
此功能目前是否已损坏,用于播放2.5.4,还是文档当前存在误导/错误?
发布于 2016-06-18 12:57:10
这段代码对我来说很好,可以播放2.5.4 Java。创建app/Filters.java文件并将其放入
import javax.inject.*;
import play.*;
import play.mvc.EssentialFilter;
import play.http.HttpFilters;
import play.mvc.*;
import play.filters.csrf.CSRFFilter;
public class Filters implements HttpFilters {
private CSRFFilter csrfFilter;
@Inject
public Filters(
CSRFFilter csrfFilter) {
this.csrfFilter = csrfFilter;
}
@Override
public EssentialFilter[] filters() {
return new EssentialFilter[] {
csrfFilter.asJava()
};
}
}在build.sbt中添加筛选器依赖项
libraryDependencies += filters在你的application.conf里放
play.modules.enabled += "play.filters.csrf.CSRFModule"
# CSRF config
play.filters.csrf {
token {
name = "csrfToken"
sign = true
}
cookie {
name = null
secure = ${play.http.session.secure}
httpOnly = false
}
body.bufferSize = ${play.http.parser.maxMemoryBuffer}
bypassCorsTrustedOrigins = true
header {
name = "Csrf-Token"
protectHeaders {
Cookie = "*"
Authorization = "*"
}
bypassHeaders {}
}
method {
whiteList = ["GET", "HEAD", "OPTIONS"]
blackList = []
}
contentType {
whiteList = []
blackList = []
}
errorHandler = null
}您可以在这里了解有关配置的更多信息( https://www.playframework.com/documentation/2.5.x/resources/confs/filters-helpers/reference.conf )。
在模板文件中只需导入助手
@import helper._然后在您的表单中使用它,像这样
<form method="POST" action="...">
@CSRF.formField https://stackoverflow.com/questions/37872947
复制相似问题