想想也不可能,网络中不会时不时出现cookie theft攻击吧。看了官方文档,也没给出解释,后来在oschina看到一篇分析的文章,才明白其中的缘由,文章《是谁动了我的cookie?Spring Security自动登录功能开发经历总结》。
从这篇文章的分析结合spring secutiy的源码来看,在每次持久化登录校验token完毕之后,会更新token的值并写入cookie。而token的校验是通过加密处理写入cookie中的字符串与持久化存储的token做对比看是否一致来判断登录信息。问题就出在这里,每次更新完token之后写入cookie的途中失败,导致cookie中token是旧值,而持久化存储的是新值。
那为什么会出现更新完token之后写入cookie的途中失败呢?那篇文章的作者分析的很到位,①多线程操作②服务端发生500异常③浏览器取消请求等等。
文章的作者建议不使用PersistentTokenBasedRememberMeServices,而改为使用TokenBasedRememberMeServices,TokenBasedRememberMeServices采用的是对用户名密码进行加密生成cookie的方式,token并未进行持久化存储。该方案被很多国内网站采用。
首先需要在applicationContext.xml文件中配置rememberMeServices:
代码如下 | 复制代码 |
当然这里的userDetailsService必须配置,它通常是实现了一个org.springframework.security.core.userdetails.UserDetailsService接口的java bean,你自己实现即可。
最后,在sec:http标签中配置sec:remember-me:
代码如下 | 复制代码 |
|
随后,重启你的应用,以后再也不用担心CookieTheftException了。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔