内容简介: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 Session可参考:程序猿DD以上所述就是小编给大家介绍的《Spring Security系列之Session管理(十四)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 技术管理者标准管理模板
- VMware管理集群可协助管理
- MySQL用户账户管理与权限管理详解
- 项目管理基础:什么是项目管理?
- 软件管理理论:目标管理 & SMART 原则
- Go 语言内存管理(二):Go 内存管理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Haskell School of Music
Paul Hudak、Donya Quick / Cambridge University Press / 2018-10-4 / GBP 42.99
This book teaches functional programming through creative applications in music and sound synthesis. Readers will learn the Haskell programming language and explore numerous ways to create music and d......一起来看看 《The Haskell School of Music》 这本书的介绍吧!