任何人都可以告诉我如何在spring security中使用“记住我”复选框进行自定义身份验证,
这是我在登录页面记住我的字段
这是secuirty.xml中的配置
谢谢
答案 0 :(得分:2)
正如Spring Docs中所定义的,当一个人声明“记住我”时,“user-service-ref”应为:
“remember-me服务实现需要访问a UserDetailsService,因此必须在应用程序中定义一个 上下文中,“
但是,在您的情况下,您的user-service-ref是对MyCustomAuthentication类型的bean的引用。这就是为什么你得到ClassCastException“MyCustomAuthentication不能转换为UserDetailsService”。
您应该定义类似的内容:
<security:user-service id="userDetailsService">
<security:user name="username" password="pass" authorities="ROLE_USER" />
</security:user-service>
并在“user-service-ref”
中使用此IDP.S。恕我直言,您还必须修复您的身份验证提供程序
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
另一个重要说明(来自文档):
请注意,两个(Spring的)实现都需要一个 的UserDetailsService。如果您使用的是身份验证提供程序 然后不使用UserDetailsService(例如,LDAP提供程序) 它将无法工作,除非您还有一个UserDetailsService bean 应用程序上下文。