如何使用在Spring安全性中记住我的自定义身份验证

时间:2012-10-31 07:49:19

标签: cookies spring-security session-cookies remember-me

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

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

这是secuirty.xml中的配置

谢谢

1 个答案:

答案 0 :(得分:2)

正如Spring Docs中所定义的,当一个人声明“记住我”时,“user-service-ref”应为:

  

“remember-me服务实现需要访问a   UserDetailsS​​ervice,因此必须在应用程序中定义一个   上下文中,“

但是,在您的情况下,您的user-service-ref是对MyCustomAuthentication类型的bean的引用。这就是为什么你得到ClassCastException“MyCustomAuthentication不能转换为UserDetailsS​​ervice”。

您应该定义类似的内容:

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

并在“user-service-ref”

中使用此ID

P.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的)实现都需要一个   的UserDetailsS​​ervice。如果您使用的是身份验证提供程序   然后不使用UserDetailsS​​ervice(例如,LDAP提供程序)   它将无法工作,除非您还有一个UserDetailsS​​ervice bean   应用程序上下文。