Spark 是 运行 before filter 两次
Spark is running before filter twice
我正在映射一个过滤器以在登录前检查一些必填字段。我的代码如下所示:
before("/login", (req, res) -> {
// do some things
LOGGER.debug("before /login");
LOGGER.debug("Request -> " + req);
LOGGER.degub("body " + req.body());
}
当我的应用程序 运行 时,before
过滤器被调用两次。
每个 req
都是不同的实例。在第一个中 req.body()
的内容是一个空字符串。在第二个中,内容正是我从客户端应用程序发送的内容。
调试,我发现一个过滤器的路径被描述为 +/*paths
在 SparkUtils
class 中声明。
有两个问题:
- 如何禁用该行为?
- 过滤器声明为
+/*paths
的目的是什么?
我认为过滤器被调用两次的原因是因为我按照 here 所述的步骤启用 CORS。无论如何,我需要使用 CORS,但是在我的场景中被调用两次的过滤器是个问题。
我认为您不需要使用过滤器。当你需要检查某些东西时使用过滤器,在不同的情况下..
在你的情况下,你需要在POST请求时检查正文(例如,我不知道你的具体情况是什么)
正如您提到的,由于 OPTIONS 和 POST 请求,该过滤器被调用了两次。
您应该做的是将验证移至接收请求的方法。例如:
Spark.post("/login", (req, res) -> {
// validate..
// do action..
});
如果您真的需要保留过滤器,另一种选择是检查过滤器中的请求方法,并将验证仅应用于 POST 一个,而不是 OPTIONS 一个。
我正在映射一个过滤器以在登录前检查一些必填字段。我的代码如下所示:
before("/login", (req, res) -> {
// do some things
LOGGER.debug("before /login");
LOGGER.debug("Request -> " + req);
LOGGER.degub("body " + req.body());
}
当我的应用程序 运行 时,before
过滤器被调用两次。
每个 req
都是不同的实例。在第一个中 req.body()
的内容是一个空字符串。在第二个中,内容正是我从客户端应用程序发送的内容。
调试,我发现一个过滤器的路径被描述为 +/*paths
在 SparkUtils
class 中声明。
有两个问题:
- 如何禁用该行为?
- 过滤器声明为
+/*paths
的目的是什么?
我认为过滤器被调用两次的原因是因为我按照 here 所述的步骤启用 CORS。无论如何,我需要使用 CORS,但是在我的场景中被调用两次的过滤器是个问题。
我认为您不需要使用过滤器。当你需要检查某些东西时使用过滤器,在不同的情况下..
在你的情况下,你需要在POST请求时检查正文(例如,我不知道你的具体情况是什么)
正如您提到的,由于 OPTIONS 和 POST 请求,该过滤器被调用了两次。
您应该做的是将验证移至接收请求的方法。例如:
Spark.post("/login", (req, res) -> {
// validate..
// do action..
});
如果您真的需要保留过滤器,另一种选择是检查过滤器中的请求方法,并将验证仅应用于 POST 一个,而不是 OPTIONS 一个。