gpt4 book ai didi

java - 在 SparkJava 中为静态文件添加 `before` 过滤器

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:20 26 4
gpt4 key购买 nike

我在 Spark 中指定了静态文件的位置应用:

Spark.staticFileLocation("/public")

现在我想为某些文件添加过滤器(例如出于安全目的),但它不起作用:

Spark.before("/admin.html", myFilter);

但是,它确实适用于非静态映射。是否也可以为静态文件配置这样的过滤器?

换句话说,Spark 保护静态文件(如管理页面的模板)不被未经身份验证暴露的最佳实践是什么?

最佳答案

您可以使用 Spark 的 StaticFilesConfiguration,只是不要使用内置的连接。 Spark.staticFileLocation("/public") 在检查任何其他过滤器或路由之前创建并发送响应。试试这个:

package web;

import spark.Service;
import spark.staticfiles.StaticFilesConfiguration;

public class ServerExample {

public ServerExample() {
Service service = Service.ignite();
service.port(1234);

// All other filters first
service.before((request, response) -> { /* Authentication filter */ });
service.before("/admin.html", (request, response) ->
service.halt(401, "Nothing to see here"));
service.before((request, response) -> { /* Some other filter */ });

// Static files filter is LAST
StaticFilesConfiguration staticHandler = new StaticFilesConfiguration();
staticHandler.configure("/public");
service.before((request, response) ->
staticHandler.consume(request.raw(), response.raw()));

// All your routes (are belong to us)
service.get("/", (req, res) -> "Hello world");
service.get("/health", (req, res) -> "Peachy");
}

public static void main(String[] args) {
new ServerExample();
}
}

从长远来看,您可能希望从 Nginx 或 Apache 提供静态文件,如果您真的成功了,CDN :)

关于java - 在 SparkJava 中为静态文件添加 `before` 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154744/

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