【问题标题】:Play 2.5 Filters播放 2.5 过滤器
【发布时间】:2016-11-09 01:58:09
【问题描述】:

我正在尝试从 2.4 迁移到玩 2.5。我在过滤器代码中遇到问题。下面是我的过滤代码

public class Filters implements HttpFilters {

    private final SecurityFilter securityFilter;

    @Inject
    public Filters(SecurityFilter securityFilter) {
        this.securityFilter = securityFilter;
    }

    @Override
    public EssentialFilter[] filters() {
        return new EssentialFilter[] {securityFilter.asJava()};
    }
}

根据文档https://www.playframework.com/documentation/2.5.x/JavaHttpFilters

asJava() 方法可用,并在 Eclipse 中完美编译 2.5 jar。但是上面的代码在我通过 activator ui 或 activator dist 运行时会失败

我已经更新了下面的 plugins.sbt addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.1")

但它仍然失败。还有什么应该改变的?或者是否有任何其他配置要更改?

【问题讨论】:

  • 你遇到了什么错误?
  • 我收到错误说 asJava() 不是一个有效的方法!!!
  • 你从哪里导入SecurityFilter?它是 Scala 过滤器吗?
  • 导入 play.http.HttpFilters;导入 play.mvc.EssentialFilter;是进口的。但是安全过滤器本身看起来像是从 pac4j 用 scala 编写的,它的导入是 import org.pac4j.play.filters.SecurityFilter;
  • @Guruprasad 你知道如何解决这个问题

标签: java playframework-2.5


【解决方案1】:

当我将我的应用程序从 2.4 迁移到 2.5 时,我遇到了同样的问题,我通过这种方式解决了:

我将过滤器代码更改为:

import play.filters.cors.CORSFilter;
import play.http.DefaultHttpFilters;

import javax.inject.Inject;

public class Filters extends DefaultHttpFilters {

@Inject public Filters(CORSFilter corsFilter) {
    super(corsFilter);
}

并按照文档中的步骤操作:Enabling the CORS filter

在 build.sbt 中添加

libraryDependencies += 过滤器

并在application.conf中配置cors:

filters{
# CORS filter configuration
cors {

  # The path prefixes to filter.
  pathPrefixes = ["/json/rest/api"]

  # The allowed origins. If null, all origins are allowed.
  allowedOrigins = null

  # The allowed HTTP methods. If null, all methods are allowed
  allowedHttpMethods = ["POST","GET"]

  # The allowed HTTP headers. If null, all headers are allowed.
  allowedHttpHeaders = null

  # The exposed headers
  exposedHeaders = []

  # Whether to support credentials
  supportsCredentials = true

  # The maximum amount of time the CORS meta data should be cached by the client
  preflightMaxAge = 1 hour
}

如有任何问题,请随时提出。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2016-08-02
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多