Я пытаюсь реализовать функциональность «помню меня» на своем веб-сайте, используя Spring. Файлы cookie и запись в таблице persistent_logins создаются правильно. Кроме того, я вижу, что правильный пользователь восстанавливается, когда имя пользователя отображается в верхней части страницы.Проблема с Remember Me Service in Spring Security
Однако, как только я попытаюсь получить доступ к любой информации для этого пользователя, когда они вернутся после их «запоминания», я получаю исключение NullPointerException. Похоже, что пользователь снова не задан в сеансе.
Мои ApplicationContext-security.xml содержит следующее:
<remember-me data-source-ref="dataSource" user-service-ref="userService"/>
...
<authentication-provider user-service-ref="userService" />
<jdbc-user-service id="userService" data-source-ref="dataSource"
role-prefix="ROLE_"
users-by-username-query="select email as username, password, 1 as ENABLED from user where email=?"
authorities-by-username-query="select user.id as id, upper(role.name) as authority from user, role, users_roles where users_roles.user_fk=id and users_roles.role_fk=role.name and user.email=?"/>
Я думал, что это, возможно, что-то делать с пользователями-по-имени пользователя запроса, но, конечно, логин не будет правильно работать, если этот запрос был неправильно ?
Любая помощь в этом была бы принята с благодарностью.
Thanks, gearoid.
Помните, что у вас могут быть два ключевых параметра в вашей конфигурации безопасности. Включить для RememberMeAuthenticationProvider и один для TokenBasedRememberMeServices. Убедитесь, что они равны. – kboom
@kboom Спасибо за упоминание, что есть ДВЕ ключи! –