Сразу после регистрации (регистрация) Я входе в мой пользователь программно с помощью Spring Security:Нет Spring Security Запомнить меня печенье, созданный при входе в систему программно
public register(HttpServletRequest request, String user, String password) {
...
request.login(user, password);
}
Это прекрасно работает, но это не создает cookie с помпом-me (хотя с интерактивным входом cookie создается отлично).
Теперь я прочитал в this и this ответ, что вы должны проволоки в реализации RememberMeServices
(я использую PersistentTokenBasedRememberMeServices
), а затем вызвать onLoginSuccess
. PersistentTokenBasedRememberMeServices
не удался.
Как это сделать? Правильно ли это? Почему Spring Security не предлагает более удобный способ?
P.S .: Это отрывок из моей конфигурации:
@Configuration
@EnableWebSecurity
public class WebSecConf extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.rememberMe()
.tokenRepository(new MyPersistentTokenRepository())
.rememberMeCookieName("rememberme")
.tokenValiditySeconds(60 * 60 * 24)
.alwaysRemember(true)
.useSecureCookie(true)
.and()
....
...
}
}
Спасибо за ваш ответ! Я думаю, это может быть хорошим подходом. Единственная проблема заключается в том, что 'persistentTokenBasedRememberMeServices' не подключен. Я получаю' NullPointer-Exception' при вызове 'persistentTokenBasedRememberMeServices.loginSuccess (запрос, ответ, auth)' – olivmir
PS: Я использую Spring 4. – olivmir
Как только вы определяете «@ Бин "для PersistentTokenBasedRememberMeServices в вашем классе WebSecConf, поскольку я опубликовал его, не должен быть пустым, если вы его автоустанавливаете в контроллере. – abaghel