Spring security 弹簧记忆过程

Spring security 弹簧记忆过程,spring-security,remember-me,Spring Security,Remember Me,我正在使用SpringSecurity3.0.0和PersistenceMemberme。当服务器重新启动且浏览器窗口仍处于打开状态时,我们需要能够继续使用应用程序而无需登录-如果选择了“记住我” 我得到一个org.springframework.security.web.authentication.rememberme.CookiethefteException:记住我的令牌(系列/令牌)无效不匹配。暗示以前的cookie盗窃攻击,当我尝试在服务器重新启动后继续使用应用程序时。 我注意到pr

我正在使用SpringSecurity3.0.0和PersistenceMemberme。当服务器重新启动且浏览器窗口仍处于打开状态时,我们需要能够继续使用应用程序而无需登录-如果选择了“记住我”

我得到一个org.springframework.security.web.authentication.rememberme.CookiethefteException:记住我的令牌(系列/令牌)无效不匹配。暗示以前的cookie盗窃攻击,当我尝试在服务器重新启动后继续使用应用程序时。 我注意到processAutoLoginCookie方法被调用了两次。我不知道为什么。方法本身的行为似乎是正确的,即更新数据库中的令牌并更新客户端中的cookie

在此方面的任何帮助都将不胜感激


谢谢。

我收到了完全相同的问题!processAutoLoginCookie连续被调用两次,因此第一次调用成功,但第二次调用失败,因为cookie由第一次调用更新

我唯一的解决方案是将
persistentTokenBasedMemberMeservices子类化,并重写
processAutoLoginCookie
方法。我不得不复制processAutoLoginCookie的现有代码,并注释掉抛出的
CookieTheftException

注意:我的解决方案将打开一个安全漏洞

如果您愿意允许发生Cookie盗窃(我的系统是内部使用的,不包含敏感数据),那么此解决方案将起作用


或者,您还可以将
persistentTokenBasedMemberMeservices
子类化,并添加一个更健壮的解决方案,该解决方案仍然可以检查Cookie盗窃异常,但允许连续两次调用
processAutoLoginCookie

您找到这个问题的答案了吗?这发生在很久以前,我忘记了细节。但简而言之,这就是问题所在——在我的特殊情况下,这是因为我们使用Comet进行长时间的轮询。因此,长轮询和常规页面加载只调用了一次processAutoLoginCookie方法。因此,在收到第一个响应之前,数据库中的cookie已更改。同样,我忘记了确切的细节,但这只是一个简单的问题。我发布了一个类似的问题,但我自己回答了=)。我的解决方案可以在这里找到-->