任何人都可以告诉我如何在spring security中使用记住我复选框进行自定义身份验证,
这是我在登录页面中的记住我字段
这是 secuirty.xml 中的配置
谢谢
任何人都可以告诉我如何在spring security中使用记住我复选框进行自定义身份验证,
这是我在登录页面中的记住我字段
这是 secuirty.xml 中的配置
谢谢
如Spring Docs中所定义,当声明“remember-me”时,“user-service-ref”应该是:
“记住我的服务实现需要访问 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>
并在“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 的)实现都需要 UserDetailsService。如果您使用的身份验证提供程序不使用 UserDetailsService(例如,LDAP 提供程序),那么除非您的应用程序上下文中还有一个 UserDetailsService bean,否则它将无法工作。