我已经花了一天的时间,但不明白为什么remember_me
在SPring安全不起作用。我只使用XML作为没有Java代码配置:春季安全记得我不工作
<http use-expressions="false" auto-config="true">
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/BL/index.html" default-target-url="/BL/main.html"
authentication-failure-url="/BL/index.html?autherror=true"
always-use-default-target='true' />
<logout logout-url="/logout" logout-success-url="/BL/index.html"
invalidate-session="true" />
<remember-me data-source-ref="dataSource"
user-service-ref="jdbcUserService" key="99999989"
token-validity-seconds="86400" />
<access-denied-handler error-page="/BL/index.html?autherror=true" />
</http>
总之index.html
是我的登录页面。当我登录时,我看到名为SPRING_SECURITY_REMEMBER_ME_COOKIE
的值创建的cookie的值为V2FrblE1Vlk3cFd6ZDIvZnRjdnlIZz09OndOb2h2NmUvdFlZRHJvRFRPV3lheHc9PQ
。
但是,如果我现在回到index.html
页面,它会要求我再次登录。我仍然看到相同的cookie值。上述xml配置中的错误是什么?我希望它不应该要求我再次登录,但应该重定向到我的主页,因为我已经登录。
我看到下面的日志服务器上。看起来像一个请求被与用户作为空字符串发送:
14:16:34031 DEBUG JdbcUserDetailsManager:155 - 查询返回任何 结果为用户 '' 14:16:34031 DEBUG DaoAuthenticationProvider还可以为:131 - 用户'' 未找到14:16:34031 DEBUG UsernamePasswordAuthenticationFilter:318 - 身份验证请求 失败: org.springframework.security.authentication.BadCredentialsException: 认证错误14:16:34032 DEBUG UsernamePasswordAuthenticationFilter:319 - 更新 SecurityContextHolder中包含null身份验证14:16:34,032 DE BUG UsernamePasswordAuthenticationFilter:320 - 委派到 认证失败 handlerorg.springframework.se[email protected]6011c7cf 14:16:34032 DEBUG对PersistentTokenBasedRememberMeServices:214 - 交互式登录尝试是不成功的。 14:16:34032 DEBUG 对PersistentTokenBasedRememberMeServices:300 - 取消饼干 14:16:34032 DEBUG SimpleUrlAuthenticationFailureHandler:67 - 重定向到/BL/index.html?autherror=true
你使用哪种版本的spring security?当用户使用该用户名和密码登录时, – Ralph
是存储在数据库中的令牌吗? – Ralph
@Ralph Spring-Security 3.0.4 – Jatin