You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PlayFramework中配置多个过滤器?

PlayFramework 配置多个过滤器的两种方法

当然可以配置多个过滤器,下面给你两种常用的实现方式:

方式一:直接在配置文件中指定多个过滤器

你可以把 play.http.filters 改成列表形式,把多个过滤器的全类名依次写进去,执行顺序就是列表里的顺序(请求进来按正序执行,响应返回按逆序执行):

play.http.filters = [
  "filters.FirstFilter",
  "filters.SecondFilter"
]

方式二:自定义 HttpFilters 类组合多个过滤器

如果需要更灵活的逻辑(比如动态控制过滤器是否生效),可以修改你现有的 filters.HttpFilters 类,注入多个过滤器并在 filters() 方法中返回它们的数组:

package filters;

import play.mvc.EssentialFilter;
import play.http.HttpFilters;
import javax.inject.Inject;

public class HttpFilters implements HttpFilters {

    private final FirstFilter firstFilter;
    private final SecondFilter secondFilter;

    @Inject
    public HttpFilters(FirstFilter firstFilter, SecondFilter secondFilter) {
        this.firstFilter = firstFilter;
        this.secondFilter = secondFilter;
    }

    @Override
    public EssentialFilter[] filters() {
        // 这里的顺序就是过滤器执行的顺序
        return new EssentialFilter[] { firstFilter, secondFilter };
    }
}

配置文件保持原来的设置即可:

play.http.filters = "filters.HttpFilters"

注意事项

  • 所有过滤器都必须是 EssentialFilter 接口的实现类
  • 过滤器的顺序很重要:请求到达时会按列表/数组的正序执行,响应返回时会按逆序执行

内容的提问来源于stack exchange,提问作者Alter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:24:28