首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >播放2.5.4 -如何实现CSRF过滤器?

播放2.5.4 -如何实现CSRF过滤器?
EN

Stack Overflow用户
提问于 2016-06-17 04:04:19
回答 1查看 2.9K关注 0票数 3

如何在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,还是文档当前存在误导/错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-18 12:57:10

这段代码对我来说很好,可以播放2.5.4 Java。创建app/Filters.java文件并将其放入

代码语言:javascript
运行
复制
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中添加筛选器依赖项

代码语言:javascript
运行
复制
libraryDependencies += filters

在你的application.conf里放

代码语言:javascript
运行
复制
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 )。

在模板文件中只需导入助手

代码语言:javascript
运行
复制
@import helper._

然后在您的表单中使用它,像这样

代码语言:javascript
运行
复制
<form method="POST" action="...">
@CSRF.formField 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37872947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档