資格情報として sql-db でユーザー名とパスワードの組み合わせを使用して、Spring-Security によって保護された小さな webapp を取得しました。
spring-social で facebook/twitter 認証を追加したいと思います。例を使用して、ユーザーの資格情報をデータベースに保存できます。現在、次のコードを使用して、アプリの現在のセッションに対してユーザーを認証する作業を行っています。
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-exceptions は発生しません。しかし、/user/dashboard にリダイレクトされた後、ログインに戻されます。
セッションを認証するための同様のコードが、従来のサインアップ後に機能しています。
なぜこれが起こるのか、またはこれをデバッグする方法を知っている人はいますか?
よろしくお願いします!ヘンドリック