1

任何人都可以告诉我如何在spring security中使用记住我复选框进行自定义身份验证,

这是我在登录页面中的记住我字段

这是 secuirty.xml 中的配置

谢谢

4

1 回答 1

2

如Spring Docs中所定义,当声明“remember-me”时,“user-service-ref”应该是:

“记住我的服务实现需要访问 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>

并在“user-service-ref”中使用此 id

PS恕我直言,您还必须修复您的身份验证提供程序

高温高压

对于您的要求,更准确地说:

        <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

另一个重要说明(来自文档):

请注意,两个(Spring 的)实现都需要 UserDetailsS​​ervice。如果您使用的身份验证提供程序不使用 UserDetailsS​​ervice(例如,LDAP 提供程序),那么除非您的应用程序上下文中还有一个 UserDetailsS​​ervice bean,否则它将无法工作。

于 2012-10-31T09:50:23.297 回答