内容简介:Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。本文主要描述在 Spring Secu
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。
Session管理
本文主要描述在 Spring Security 下 Session的以下三种管理,
- Session超时时间
- Session的并发策略
- 集群环境Session处理
Session超时
- application.yml配置超时时间
server: port: 80 session: timeout: 60 复制代码
- 配置MerryyouSecurityConfig
http. ...... .sessionManagement() .invalidSessionUrl("/session/invalid")//session失效跳转的链接 ..... 复制代码
- Cotroller中/session/invalid
@GetMapping("/session/invalid") @ResponseStatus(code = HttpStatus.UNAUTHORIZED) public Result<String> sessionInvalid() { return ResultUtil.error(HttpStatus.UNAUTHORIZED.value(), "session失效"); } 复制代码
Session的并发策略
- 配置MerryyouSecurityConfig
http. ...... .maximumSessions(1)//最大session并发数量1 .maxSessionsPreventsLogin(false)//false之后登录踢掉之前登录,true则不允许之后登录 .expiredSessionStrategy(new MerryyounExpiredSessionStrategy())//登录被踢掉时的自定义操作 ..... 复制代码
- MerryyounExpiredSessionStrategy
@Slf4j public 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("并发登录!"); } } 复制代码
集群环境Session处理
添加spring-session-data-redis依赖
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.3.1.RELEASE</version> </dependency> 复制代码
配置Spring-session存储策略
spring: redis: host: localhost port: 6379 session: store-type: redis 复制代码
测试8080和8081端口分别启动项目
java -jar spring-security.jar --server.port=8080 java -jar spring-security.jar --server.port=8081 复制代码
效果如下:
以上所述就是小编给大家介绍的《Spring Security系列之Session管理(十四)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 技术管理者标准管理模板
- VMware管理集群可协助管理
- MySQL用户账户管理与权限管理详解
- 项目管理基础:什么是项目管理?
- 软件管理理论:目标管理 & SMART 原则
- Go 语言内存管理(二):Go 内存管理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ruby on Rails敏捷开发最佳实践
李刚 / 电子工业出版社 / 2008-4 / 79.80元
《Ruby on Rails敏捷开发最佳实践》适用于正在使用Ruby On Rails进行应用开发的开发人员、渴望了解Ruby On Rails框架的开发人员,尤其适合有初步的Java EE开发经验,想从Java EE平台过渡到Ruby On Rails开发平台的开发者。 Ruby On Rails框架一经推出,立即引起B/S结构应用开发领域革命性的变化:开发者无需理会架构,只需要按Rail......一起来看看 《Ruby on Rails敏捷开发最佳实践》 这本书的介绍吧!