2013-07-02 57 views
2

我使用Spring Security持久登錄。我堅持記住我的記號在我的數據庫中。有時候,我得到以下錯誤:如何解決「無效的記憶我記號(系列/記號)不匹配」錯誤?

| Error 2013-07-02 13:54:14,859 [http-nio-8080-exec-2] ERROR [/buddyis].[gsp] - 
Servlet.service() for servlet [gsp] in context with path [/buddyis] threw exception 
Message: Invalid remember-me token (Series/token) mismatch. Implies previous cookie theft attack. 
Line | Method 
->> 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 615 | run  in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run . . . in java.lang.Thread 

在我的Config.groovy:

grails.plugins.springsecurity.logout.handlerNames = [ 
'rememberMeServices', 'securityContextLogoutHandler', 'mySecurityEventListener' 
] 
grails.plugins.springsecurity.rememberMe.cookieName = 'RememberMe' 
grails.plugins.springsecurity.rememberMe.alwaysRemember = true 
grails.plugins.springsecurity.rememberMe.tokenValiditySeconds = 31536000 // 365 days 
grails.plugins.springsecurity.rememberMe.key = 'rememberMe' 
grails.plugins.springsecurity.rememberMe.persistent = true 
grails.plugins.springsecurity.rememberMe.persistentToken.domainClassName = 'mypackage.PersistentLogin' 

如何解決這個問題?這是什麼意思?

+0

你現在爲'rememberMe'配置了哪些配置? – dmahapatro

+0

@dmahapatro我更新了我的配置。 – confile

+0

我認爲你是這個[bug](http://jira.grails.org/browse/GPSPRINGSECURITYCORE-70)的受害者,但尚未解決。我最終會猜測Toby Hobson提出的一項工作。 – dmahapatro

回答

1

我在我的移動網站上有同樣的例外情況。 當記住我的用戶的http會話過期並且用戶再次訪問網站時,如果有多個並行(ajax)請求發生此問題。

發生這種情況的原因是第一個並行請求將刷新記住我的令牌,並且令牌(無效)的所有其他請求都會與持久令牌不匹配。

所以你沒有很多選擇來解決這個問題,一個選項是沒有並行請求,但在toady的移動應用程序中,這是不太可能的。

我所做的就是要求/我請求啓動/加載Web應用程序時首先要做的事情之後,我可以執行多個並行請求,而不必擔心會觸發此問題。

相關問題