1

カスタム認証のためにSpring SecurityのRemember meチェックボックスを使用する方法を教えてください。

これはログインページの私の記憶フィールドです

これはsecuirty.xmlの構成です

ありがとう

4

1 に答える 1

2

Spring Docsで定義されているように、「remember-me」を宣言する場合、「user-service-ref」は次のようにする必要があります。

「remember-me サービスの実装には UserDetailsS​​ervice へのアクセスが必要なため、アプリケーション コンテキストで定義されている必要があります。」

ただし、あなたの場合、user-service-ref はタイプ MyCustomAuthentication の Bean への参照です。これが ClassCastException "MyCustomAuthentication cannot be cast to UserDetailsS​​ervice" を取得する理由です。

次のように定義する必要があります。

<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 の) 実装にも UserDetailsS​​ervice が必要であることに注意してください。UserDetailsS​​ervice を使用しない認証プロバイダー (LDAP プロバイダーなど) を使用している場合、アプリケーション コンテキストに UserDetailsS​​ervice Bean も含まれていない限り、それは機能しません。

于 2012-10-31T09:50:23.297 に答える