2013-07-02 3 views
2

Я использую постоянные логины Spring Security. Я сохраняю в своей базе данных свой токен. Иногда я получаю следующее сообщение об ошибке:Как исправить ошибку «Недействительный токен mem-memken (серия/токен)» Ошибка?

| 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

Я думаю, что вы являетесь жертвой этой [ошибки] (http://jira.grails.org/browse/GPSPRINGSECURITYCORE-70), которая еще не решена. Я думаю, что есть работа, которую, как я предполагал, предложил Тоби Хобсон. – dmahapatro

ответ

1

У меня такое же исключение на моем мобильном сайте. Когда http-сеанс пользователя, который вошел в систему с моим именем, истекает, и когда пользователь снова обращается к веб-сайту, если есть несколько параллельных (ajax) запросов, эта проблема возникает.

Это происходит потому, что первый из параллельных запросов обновит токен памяти и токен (который является недействительным), все остальные запросы будут иметь несоответствие сохраняемому токену.

Таким образом, у вас не так много вариантов исправить это, вариант состоит в том, чтобы не иметь параллельных запросов, но в мобильных приложениях toady это не так много.

Что я сделал, это иметь/мне запросы, которые я делаю при запуске/загрузке веб-приложения, и после этого могу выполнять несколько параллельных запросов, не беспокоясь о том, что я удалю эту проблему.