Cookies 如何在spring security中使用RememberMe进行自定义身份验证

Cookies 如何在spring security中使用RememberMe进行自定义身份验证,cookies,spring-security,session-cookies,remember-me,Cookies,Spring Security,Session Cookies,Remember Me,有人能告诉我如何使用spring security中的“记住我”复选框进行自定义身份验证吗 这是登录页面中的“记住我”字段 这是secuirty.xml中的配置 谢谢如中所定义,当声明“记住我”时,“用户服务参考”应为: “记住我的服务实施需要访问 UserDetailsService,因此必须在应用程序中定义一个 上下文。” 然而,在您的例子中,您的用户服务ref是MyCustomAuthentication类型bean的ref。这就是为什么会出现ClassCastException“MyCu

有人能告诉我如何使用spring security中的“记住我”复选框进行自定义身份验证吗

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

这是secuirty.xml中的配置

谢谢

如中所定义,当声明“记住我”时,“用户服务参考”应为:

“记住我的服务实施需要访问 UserDetailsService,因此必须在应用程序中定义一个 上下文。”

然而,在您的例子中,您的用户服务ref是MyCustomAuthentication类型bean的ref。这就是为什么会出现ClassCastException“MyCustomAuthentication不能强制转换为UserDetailsService”

您应该定义如下内容:

<security:user-service id="userDetailsService">
    <security:user name="username" password="pass" authorities="ROLE_USER" />
</security:user-service>

并在“用户服务参考”中使用此id

另外,您还必须修复您的身份验证提供商

根据您的要求,更准确地说:

        <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的)实现都需要 用户详细信息服务。如果您使用的是身份验证提供程序 然后不使用UserDetailsService(例如LDAP提供程序) 除非您的应用程序中还有UserDetailsService bean,否则它不会工作 应用程序上下文


您仍然可以使用自定义身份验证类。然而,您必须定义userDetailsService,并将其引用到我向您展示的位置,否则您将继续从spring获得异常。如果有帮助,请友好地标记此答案。记住我与身份验证提供程序无关。当然,您可以实现自己的提供程序,然后使用。记住我和我在例子中展示的一样。我相信多读一些文档会有所帮助。试试这个:没问题。我已经(在我的回答中)从文档中添加了另一个重要和相关的引用,关于userDetailsService的需求。您必须在XML中包含userDetailsService,否则“记住我”将无法工作。