当前位置: 首页 > 知识库问答 >
问题:

如何在Spring过滤器中获取路径变量?

章涵蓄
2023-03-14

我正在处理一个安全过滤器,它需要根据path变量的值做一些检查。我试着这样做:

final map pathVariables=(map )request.getattribute(handlermapping.uri_template_variables_attribute);

但映射始终为空,因此我的筛选器的优先级似乎高于在请求中填充URI_Template_Variables_Attribute属性的RequestMappingHandlerMapping

我已尝试添加以下配置:

@Configuration
@EnableWebMvc
public class WebConfiguration {

    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping requestMappingHandler = new RequestMappingHandlerMapping();
        requestMappingHandler.setOrder(0);
        return requestMappingHandler;
    }
}

这没有帮助,筛选器是在调用RequestMappingHandlerMapping之前执行的。

在我的安全过滤器中,我获取Auth头,解密它,从中获取userid并将它与路径var值进行比较。如果这些ID不匹配,我返回403。

我想知道是否有可能覆盖这两个动作的顺序。或者,也许,有其他的方法来检查过滤器中的路径变量?

共有1个答案

白浩气
2023-03-14

在Spring中,过滤器在servlet之前执行。而RequestMappingHandlerMapping是由DispatcherServlet调用的,因此RequestMappingHandlerMapping不能用于检索筛选器中的路径变量。因此,我正在考虑要么实现一个拦截器,要么使用AOP方法。

 类似资料:
  • 我想从示例URL获取。 我知道,如果使用方法获取路径变量非常简单。 但是,过滤器是在servlet之前执行的。 或者,没有方法,有没有方法检索路径变量? 字符串实际上是可用的,我打算从中提取111。

  • 问题内容: 我定义了一个,并且具有带有Spring注释的Java类。 我想将Bean 放入我的,因此尝试了以下操作: 但是它总是返回。我怎样才能得到一个Spring bean? 问题答案: 尝试: 你的bean在应用程序上下文中的名称/标识在哪里。甚至更好: 还可以看看GenericFilterBean及其子类。

  • 在实现持久底部栏时,当单击底部栏中的按钮时,需要恢复以前的路由。 单击底部栏中的按钮时,会保存其当前路线路径(/a/b/c ),并根据按钮的单击恢复先前保存的路线。 从概念上讲,用户会认为每个按钮都是一个工作区,其状态永远不会丢失(包括后退堆栈)。用户可以安全地从一个工作区切换到另一个工作区。 当路由重绕到根时,如何在Flutter中获取当前路由路径?

  • 我在Spring反应式应用程序中工作。我知道如何使用HttpServletRequest在拦截器中获取PathVariable,有些是这样的: 但是我们不得不做一些更改,现在我们有了一个WebFilter实现,所以我们不使用HttpServletRequest,而是使用ServerWebExchange 如何从ServerWebExchange获取路径变量?可能吗?

  • 问题内容: 我需要控制器中的应用程序上下文路径,我尝试了下面的代码抛出NULLPOINTER EXCEPTION。 HttpServletRequest请求; 字符串路径= request.getContextPath(); 请帮我 谢谢 问题答案: 变量已声明,但未初始化。难怪你得到一个。 查看文档以访问与请求相关的其他数据。 读完这些并确定要将代码绑定到本机Servlet API后,请尝试以下

  • 问题内容: 我需要配置我的Jenkins服务器,并且需要向Jenkins配置添加Java路径。 但是我是lunix命令的新手,有什么建议吗? 我不知道在哪里安装它! 查看经过验证的答案! 问题答案: 这是解决方案 感谢tecadmin