Java 允许在RegexRequestMatcher中使用查询字符串
我正在尝试添加一个RegexRequestMatcher,它将查找具有特定url参数的url,并将请求重定向到自定义AuthenticationEntryPoint。但是,我很难匹配url参数,因为它们似乎要从传入的HttpServletRequest中删除。经过一些重要的搜索之后,听起来像是出于安全原因,spring security故意从传入的请求中过滤掉这些内容 似乎有一个属性stripQueryStringFromUrls覆盖了此行为,可通过DefaultFilterInvocationSecurityMetadataSource类上的BeanPostProcessor进行设置,但是,从3.1开始,该属性在3.0.0中不再存在,它似乎已移动到FilterChainProxy,然后在下一版本中完全消失 spring安全性默认情况下仍然删除查询字符串,还是配置属性的消失是由于删除该行为造成的?如果仍然如此,您如何在SpringSecurity3.1中启用url参数Java 允许在RegexRequestMatcher中使用查询字符串,java,grails,spring-security,Java,Grails,Spring Security,我正在尝试添加一个RegexRequestMatcher,它将查找具有特定url参数的url,并将请求重定向到自定义AuthenticationEntryPoint。但是,我很难匹配url参数,因为它们似乎要从传入的HttpServletRequest中删除。经过一些重要的搜索之后,听起来像是出于安全原因,spring security故意从传入的请求中过滤掉这些内容 似乎有一个属性stripQueryStringFromUrls覆盖了此行为,可通过DefaultFilterInvocation
我通过GrailsSpringSecurity插件1.2.7使用SpringSecurity 3.1.3 spring security web的3.0版和3.1版之间确实删除了StripQueryStringfromURL。整个功能都被删除了,取而代之的是RequestMatcher对象被用来处理必要的请求转换。这可以在类DefaultFilterInvocationSecurityMetadataSource的以下提交差异中进行验证 相反,该框架已更改,因此使用AntPathRequestMatcher会导致忽略查询字符串,而使用RegexRequestMatcher会将其考虑在内,并且使用自定义RequestMatcher会执行您选择的任何操作 因此,上述实施本应奏效。事实证明,问题中不明显的实际问题是用于测试spring安全性的url本身。url的正确顺序是 [url base]+[query params]+[page fragment]例如localhost/something?param=whatever/blah 但我正试图这样订购 [url base]+[page fragment]+[query params]例如localhost/something/blah?param=whatever 这导致查询参数与页面片段一起丢失。当以正确的顺序完成时,spring security会相应地正确地接收和解析请求