我正在使用Spring MVC和Spring Security以及rememberme身份验证。
每当我发布一个FORM而我的会话在向表单添加内容并提交之前都会丢失,我会被重定向到Spring Security使用的targetUrl。
我想要发生的是在成功记住身份验证之后,用户按预期处理原始POST请求。在LoginSuccessHandler中捕获POST请求并以此方式处理它的最佳方法是什么?
答案 0 :(得分:0)
您应该在rememberMe配置中使用org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler
bean作为authentication-success-handler-ref。
Spring Security将在ExceptionTranslationFilter
内记住您的原始POST请求(并使用RequestCache
存储)。进行身份验证后,successHandler将重定向到原始URL(基于RequestCache
中的数据)。然后,RequestCacheAwareFilter
会拦截重定向(会自动添加您的< security:http>配置),它会将请求的数据替换为原始POST中的内容。