カスタム認証のためにSpring SecurityのRemember meチェックボックスを使用する方法を教えてください。
これはログインページの私の記憶フィールドです
これはsecuirty.xmlの構成です
ありがとう
カスタム認証のためにSpring SecurityのRemember meチェックボックスを使用する方法を教えてください。
これはログインページの私の記憶フィールドです
これはsecuirty.xmlの構成です
ありがとう
Spring Docsで定義されているように、「remember-me」を宣言する場合、「user-service-ref」は次のようにする必要があります。
「remember-me サービスの実装には UserDetailsService へのアクセスが必要なため、アプリケーション コンテキストで定義されている必要があります。」
ただし、あなたの場合、user-service-ref はタイプ MyCustomAuthentication の Bean への参照です。これが ClassCastException "MyCustomAuthentication cannot be cast to UserDetailsService" を取得する理由です。
次のように定義する必要があります。
<security:user-service id="userDetailsService">
<security:user name="username" password="pass" authorities="ROLE_USER" />
</security:user-service>
このIDを「user-service-ref」で使用します
PS IMHO、認証プロバイダーも修正する必要があります
HTH
あなたのリクエストについて、より正確に言うと:
<http auto-config="true" use-expressions="true">
...
<remember-me user-service-ref="customUserDetailsManager"/>
</http>
<b:bean id="customUserDetailsManager"
class="com.something.something.MyCustomUserDetailsManager" />
<authentication-manager>
<authentication-provider user-service-ref="customUserDetailsManager">
</authentication-provider>
</authentication-manager>
</b:beans>
MyCustomUserDetailsManager は UserDetailsManager を実装する必要があることに注意してください
もう 1 つの重要な注意事項 (ドキュメントから):
どちらの (Spring の) 実装にも UserDetailsService が必要であることに注意してください。UserDetailsService を使用しない認証プロバイダー (LDAP プロバイダーなど) を使用している場合、アプリケーション コンテキストに UserDetailsService Bean も含まれていない限り、それは機能しません。