弹簧安全 3.1.3 请求查询字符串剥离
我正在使用保护我的应用程序,并且我要求允许用户通过第三方应用程序中的链接登录。Spring Security 3.1.3
但是,第三方应用程序中的链接将重定向到特定资源,而不是登录页,其中用户希望访问的资源将被定义为查询字符串参数。因此,例如,链接的形式为://server.com/app/build/panel.jsp?resourceid='blah'
当用户单击此链接时,应将他们带到我的Spring Security配置中定义的登录页面,如果经过身份验证,则应重定向到包含querystring参数的原始链接。querystring 参数对用户进行身份验证的方式没有影响,它只是资源的 ID。
现在,除了查询字符串之外,这一切都可以正常工作,查询字符串在进入请求处理流之前被Spring Security剥离。
这显示在Spring Security的调试输出中。;
org.springframework.security.web.savedrequest.HttpSessionRequestCache: DefaultSavedRequest 添加到 Session: DefaultSavedRequest[http://server.com:8080/app/build/panel.jsp]
即,查询字符串未保存并已被删除。resourceid='blah'
请注意,我目前正在使用 Ant 匹配。我没有必要实际匹配查询字符串。
在早期版本的Spring Security中,似乎您可以通过使用BeanPostProcessor来影响此行为,如这篇文章所述,Spring Security - Url,请求参数规则被忽略。但是方法 DefaultFilterInvocationSecurityMetadataSource.setStripQueryStringFromUrls() 已从 中删除。Spring Security 3.1.3
如何配置Spring Security以不从原始请求中剥离查询字符串?那么当用户在登录到原始查询字符串后被重定向时,查询字符串参数将被保留吗?URL
非常感谢霍华德