У меня есть небольшое веб-приложение, защищенное Spring-Security с использованием комбо имени пользователя и пароля на sql-db в качестве учетных данных.
Теперь я хочу добавить аутентификацию facebook / twitter с помощью spring-social. Используя примеры, я могу хранить учетные данные пользователей в моей базе данных. Сейчас я работаю над аутентификацией пользователя по его текущему сеансу в моем приложении, используя следующий фрагмент кода:
</p>
<pre><code>public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
User user = userService.getUserById(Long.parseLong(userId));
user.setPassword(this.passwordEncoder.encodePassword(user.getAccessToken(), this.salt));
this.userService.store(user);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getDisplayName(), user.getAccessToken());
HttpServletRequest req = request.getNativeRequest(HttpServletRequest.class); // generate session if one doesn't exist
token.setDetails(new WebAuthenticationDetails(req));
Authentication authenticatedUser = this.authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
return "/user/dashboard";
}
Аутентификация работает, я не получаю никаких исключений BadCredential. Но после перенаправления на / user / dashboard я снова получаю логин.
У меня нет идей, похожий кусок кода для аутентификации сеанса работает после классической регистрации.
У кого-нибудь есть идеи, почему это происходит или как это отладить?
Большое спасибо заранее!
Хендрик