0

Spring セキュリティ 3.x を使用しています。私のログイン ページには、ユーザーが ID カードをスキャンして入力する追加のフィールドがあります。これを行う場合、ユーザー名は必要ありません (スキャンされた ID に対して検索されます) が、パスワードは必要です。

問題は、カスタムでユーザー名が必要なことですAuthenticationProvider。ID は、この前のフィルターでキャプチャされます ( UsernamePasswordAuthenticationFilter)。それらを接続する方法がわからないので、AuthProviderユーザー名が必要ないことを知っています(また、認証オブジェクトが渡されるため、この時点でどのようにIDを取得しますか?)。

4

2 に答える 2

1

UsernamePasswordAuthenticationToken ではない特別な種類の認証インターフェイスが必要な場合があるため、ユーザー名とパスワードの両方を必要としません。次に、AuthenticationProcessingFilter/AuthenticationProvider がそれらの 1 つを作成する場合があります。例としてspring-cas-client とCasAuthenticationTokenを見てください。

于 2013-02-15T05:34:12.353 に答える
0

私が拡張していたフィルターは FORM_LOGIN_FILTER でしたが、これは正しいですが、取得と認証マネージャー呼び出しを渡す super() メソッドを呼び出す代わりに、ここですべての取得 (j_username、j_password) を実行し、認証マネージャーを手動で呼び出す必要がありました。春。これには、UsernamePasswordAuthenticationToken の拡張も必要でした。これを行うと、それらは接続されます。

于 2013-02-15T04:23:53.547 に答える