gpt4 book ai didi

playframework - Play 2.5.4 - 如何实现 CSRF 过滤器?

转载 作者:行者123 更新时间:2023-12-02 03:14:30 25 4
gpt4 key购买 nike

如何在 Play 2.5.4 中实现 CSRFfilters? Play 文档错误(不编译,不能在 Play 2.5.4 java api下),这里的例子不编译(Play 2.5 disable csrf protection for some requests)。

2.5 java API 有一个 CRSFFilter 类,但它不是 EssentialFilter 的子类,因此不能添加到 EssentialFilters 数组中,因为它是错误的类型。

Play 2.5.4 的此功能当前是否已损坏,或者文档当前是否具有误导性/错误?

最佳答案

这段代码对我来说很好用,Play 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

关于playframework - Play 2.5.4 - 如何实现 CSRF 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37872947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com