我试图实现作为Spring 3.1一部分的Remember Me功能,允许客户在以前在登录表单中选择该选项时自动登录。这是我的实际实现:
在spring-security-config.xml中:
<security:http auto-config="false" entry-point-ref="myEntryPoint" request-matcher="regex" disable-url-rewriting="true">
...
<security:remember-me key="mykey" authentication-success-handler-ref="rememberMeAuthenticationSuccessHandler"/>
</security:http>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="acceleratorAuthenticationProvider" />
<security:authentication-provider ref="rememberMeAuthenticationProvider"/>
</security:authentication-manager>
<bean id="rememberMeAuthenticationSuccessHandler" class="uk.co.portaltech.qlaccelerator.storefront.security.RememberMeAuthenticationSuccessHandler" scope="tenant">
<property name="myCookieStrategy" ref="myCookieStrategy" />
<property name="customerFacade" ref="customerFacade" />
</bean>
<bean id="rememberMeAuthenticationProvider" class="org.springframework.security.authentication.RememberMeAuthenticationProvider">
<property name="key" value="myKey" />
</bean>
我的login.jsp包含spring rememeber me复选框:
<form:checkbox id="_spring_security_remember_me" class="rememberMe" path="_spring_security_remember_me" />
当我第一次访问该站点时(通过HTTP会话),它不会自动登录,但只要我点击登录按钮(通过HTTPS会话),它就会自动登录。
这是应该工作的方式还是我在配置中遗漏了一些东西让Spring在我访问网站时登录?
答案 0 :(得分:0)
记住我让应用记住用户跨会话。意思是,如果服务器退出或用户关闭浏览器并重新打开它。在这些情况下,将不再要求用户提供其凭据。
在您描述的情况下,用户(您)输入他的凭据,然后才登录?什么是“自动”的意思?
htlpful links:
remember me result is ignored by spring security, and i am still redirected to the login page
答案 1 :(得分:0)
检查remember-me cookie是否标记为&#34; secure&#34; (查看浏览器的cookie列表)。如果是这样,它就不会通过HTTP连接发送,这可以解释你所看到的内容。
默认情况下,如果请求是通过HTTPS创建安全cookie。您可以使用正在使用的RememberMeServices
实施的useSecureCookie
property进行更改。