Spring Security 自定义TokenBasedRememberMeServices,RememberMe功能失效

来源:互联网 发布:sas软件正版价格 编辑:程序博客网 时间:2024/04/30 00:56

     最近在做项目的时候用到了Spring Security,想用它的RememberMe功能,按照官方文档配置后

竟然不起作用,remeber-me的cookie在登录后会正常写到浏览器里,但是重启浏览器后就会丢失,

百思不得姐呀,先看了debug的日志,看到有remember-me的认证日志,发现执行了cancelCookie()

这个方法,也就是说因为某些原因,在重启浏览器后访问时,remeber-me的cookie被删除了,然后

用debug跟踪了一下,发现了问题:登陆成功时的key和重启浏览器访问时的key不一样,而登陆成功

时的key是自己定义的正确key值,看了javadoc,才发现是少配置了一步:

<remember-me services-ref="rememberMeServices"/>

<!-- RememberMeServices的实现 --><beans:bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">  <beans:constructor-arg name="userDetailsService" ref="appUserDetailsService"/>  <beans:constructor-arg name="key" value="guoxue"/>  <!-- 指定request中包含的用户是否选择了记住我的参数名 -->  <beans:property name="parameter" value="remember-me"/>  <beans:property name="tokenValiditySeconds" value="604800"/></beans:bean>
上面的配置里在remember-me 里面没有配置key,改成:

<remember-me services-ref="rememberMeServices" key="guoxue"/>
完美解决问题。


0 0
原创粉丝点击