首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spark中使用pac4j安全过滤器时,如何获取post请求的参数?

在Spark中使用pac4j安全过滤器时,如何获取post请求的参数?
EN

Stack Overflow用户
提问于 2017-04-05 20:15:40
回答 1查看 794关注 0票数 2

在我的星火应用程序中,我有一个简单的表单,它的输入使用POST请求发送到服务器。通过评估其主体和提取所需参数来处理请求:

代码语言:javascript
运行
复制
post("/upload",(request, response) -> {
    String body = request.body();
    MultiMap<String> parameters = decodeParams(body);
    // post-process parameters
    // ...
    return "success";
});

只要我没有定义一个pac4j安全过滤器,确保我的应用程序的用户登录,一切都可以正常工作。我就是这样设置过滤器的:

代码语言:javascript
运行
复制
// ...
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?

任何支持都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 12:50:32

我发现了我的错误。与其在decodeParams()方法中手动解码主体中的参数,不如使用请求的queryParams()方法来获得所需的值。即使应用了筛选器,以下代码也适用于我:

代码语言:javascript
运行
复制
post("/upload",(request, response) -> {     
    final String param1 = request.queryParams("key1");
    final String param2 = request.queryParams("key2");
    // post-process parameters
    // ...
    return "success";
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43240829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档