0

メソッドで(実際には署名に従って)AbstractPreAuthenticatedProcessingFilterを返すカスタムを実装しました。PrincipalObjectgetPreAuthenticatedPrincipal(HttpServletRequest)

どういうわけかUserDetailsServiceアクセスする必要があるをカスタム実装しています。Principalを使用してみましたが、これはnullであるためSecurityContextHolder.getContext().getAuthentication().getPrincipal()にスローされます。NullPointerExceptiongetAuthentication()

それ以外の方法でアクセスするにはどうすればよいPrincipalですか?

4

2 に答える 2

1

nullである理由は、スプリングセキュリティがその時点までプリンシパルを識別できなかったためです。AbstractPreAuthenticatedProcessingFilterのjavadocから抽出します。

事前認証された認証要求を処理するフィルターを処理するための基本クラス。プリンシパルは外部システムによってすでに認証されていると想定されます。

UserDetailServiceは、ユーザーオブジェクトのロードを担当します。次に、認証が成功すると、指定されたユーザーオブジェクトを含むプリンシパルが設定されます。

于 2013-01-15T09:05:25.223 に答える
0

の代わりに、の実際の必要性であるorg.springframework.security.core.userdetails.UserDetailsServiceを実装しました。このメソッドはオブジェクトをパラメーターとして取得するため、問題は解決しました。org.springframework.security.core.userdetails.AuthenticationUserDetailsService<Authentication>AbstractPreAuthenticatedProcessingFilterloadUserDetails()Authentication

于 2013-01-15T11:35:26.733 に答える