博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Security源码分析九:Spring Security Session管理
阅读量:6626 次
发布时间:2019-06-25

本文共 1944 字,大约阅读时间需要 6 分钟。

hot3.png

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

Session管理

本文主要描述在 Spring SecuritySession的以下三种管理,

  1. Session超时时间
  2. Session的并发策略
  3. 集群环境Session处理

Session超时

  1. application.yml配置超时时间
server:  port: 80  session:    timeout: 60
  1. 配置
http.......	       .sessionManagement()            .invalidSessionUrl("/session/invalid")//session失效跳转的链接.....
  1. Cotroller/session/invalid
@GetMapping("/session/invalid")    @ResponseStatus(code = HttpStatus.UNAUTHORIZED)    public Result
sessionInvalid() { return ResultUtil.error(HttpStatus.UNAUTHORIZED.value(), "session失效"); }

效果如下:

Session的并发策略

  1. 配置
http.......	       .maximumSessions(1)//最大session并发数量1           .maxSessionsPreventsLogin(false)//false之后登录踢掉之前登录,true则不允许之后登录           .expiredSessionStrategy(new MerryyounExpiredSessionStrategy())//登录被踢掉时的自定义操作.....
  1. MerryyounExpiredSessionStrategy
@Slf4jpublic class MerryyounExpiredSessionStrategy implements SessionInformationExpiredStrategy {    @Override    public void onExpiredSessionDetected(SessionInformationExpiredEvent eventØ) throws IOException, ServletException {        eventØ.getResponse().setContentType("application/json;charset=UTF-8");        eventØ.getResponse().getWriter().write("并发登录!");    }}

效果如下:

maxSessionsPreventsLogin(true)可参考:和

集群环境Session处理

  1. 添加spring-session-data-redis依赖
org.springframework.session
spring-session-data-redis
1.3.1.RELEASE
  1. 配置Spring-session存储策略
spring:  redis:    host: localhost    port: 6379  session:    store-type: redis
  1. 测试80808081端口分别启动项目
java -jar spring-security.jar --server.port=8080java -jar spring-security.jar --server.port=8081

效果如下:

关于更多Spring Session可参考:

代码下载

从我的 github 中下载,

转载于:https://my.oschina.net/merryyou/blog/1609758

你可能感兴趣的文章
一统江湖的大前端(3) DOClever——你的postman有点low
查看>>
云栖大会上发布了哪些移动研发新利器?
查看>>
《黑客免杀攻防》读书笔记-软件逆向工程(6) switch-case分支
查看>>
day6作业--游戏人生完善
查看>>
金字塔思维
查看>>
strak组件(10):批量操作
查看>>
thinkphp空控制器的处理
查看>>
Mahout分步式程序开发 聚类Kmeans(转)
查看>>
修改linux最大文件句柄数
查看>>
接口幂等
查看>>
LibreOffice 打开中文乱码
查看>>
FromBottomToTop第十三周项目博客
查看>>
Activity的四种启动模式
查看>>
Centos vsftpd服务器搭建
查看>>
【常用工具】常用工具收集
查看>>
Tax
查看>>
网站页面多出&65279出现空白行的原因及解决方法
查看>>
第二阶段团队冲刺站立会议06
查看>>
html
查看>>
本地wampserver如何配置伪静态
查看>>