在我的星火应用程序中,我有一个简单的表单,它的输入使用POST请求发送到服务器。通过评估其主体和提取所需参数来处理请求:
post("/upload",(request, response) -> {
String body = request.body();
MultiMap<String> parameters = decodeParams(body);
// post-process parameters
// ...
return "success";
});只要我没有定义一个pac4j安全过滤器,确保我的应用程序的用户登录,一切都可以正常工作。我就是这样设置过滤器的:
// ...
MyConfig config = new MyConfig(salt, templateEngine);
CallbackRoute callback = new CallbackRoute(config, null, true);
get("/callback", callback);
post("/callback", callback);
before("/upload", new SecurityFilter(config, "FormClient"));这种过滤的效果是主体(在我的第一个代码段中)为null。
我发现了描述相同问题的Google组中的这个旧帖子,包括对根本原因的第一次分析。不幸的是,它已经有两年多的历史了,还没有收到任何答复。
编辑:,我使用的是Spark2.5.5和火花-pac4j2.0.0-RC2。
过滤后是否有检索所需参数的方法?我需要调整我的过滤器吗?或者这是星火框架中的一个bug?
任何支持都将不胜感激。
发布于 2017-04-24 12:50:32
我发现了我的错误。与其在decodeParams()方法中手动解码主体中的参数,不如使用请求的queryParams()方法来获得所需的值。即使应用了筛选器,以下代码也适用于我:
post("/upload",(request, response) -> {
final String param1 = request.queryParams("key1");
final String param2 = request.queryParams("key2");
// post-process parameters
// ...
return "success";
});https://stackoverflow.com/questions/43240829
复制相似问题