SpringSecurity-10-Session会话管理
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
Spring Security - Session会话管理摘要
理解Session
HTTP协议是无状态的,因此服务器需要Session机制来识别用户。服务器与用户之间通过请求携带的ID信息(session ID)来管理用户状态并区分用户。Cookie通常用来存储session ID,使得用户的每次请求都能够携带这一标识。但是,如果用户禁用了cookie,服务端也支持通过URL重写来传递session ID,如"http://www.baidu.com;jessionid=xxx"。然而,URL重写可能会导致会话固定攻击,黑客通过URL绑定session ID与用户身份,无需用户名和密码即可访问用户会话。
防御会话固定攻击
Spring Security通过sessionManagement配置器提供四种防御会话固定攻击的策略:none、newSession、migrateSession和changeSessionId(默认)。changeSessionId策略通过更换session ID但不新建会话来提供保护。
http.sessionManagement().sessionFixation().changeSessionId();
会话过期
Spring Security允许配置会话过期策略,例如,会话过期后跳转到特定URL。Spring Boot应用有两种会话超时设置方式,当会话超时后用户需重新登录。最短超时时间为一分钟,默认超时为30分钟。还可以自定义失效后的响应,通过invalidSessionUrl或invalidSessionStrategy配置。
http.sessionManagement().invalidSessionUrl("/invalidSession")
invalidSessionStrategy允许自定义失效后的策略,如返回JSON响应。
测试
文中提供了测试方法,通过启动项目并尝试登录来验证配置的效果。
作者鼓励关注、点赞、收藏,并声明原创文章的转载需注明出处。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)