Spring Security系列之Session管理(十四)

栏目: Java · 发布时间: 7年前

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

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

Session管理

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

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

Session超时

  1. application.yml配置超时时间
    server:
      port: 80
      session:
     timeout: 60
    复制代码
  2. 配置MerryyouSecurityConfig
    http.
    ......
            .sessionManagement()
             .invalidSessionUrl("/session/invalid")//session失效跳转的链接
    .....
    复制代码
  3. Cotroller中/session/invalid
    @GetMapping("/session/invalid")
     @ResponseStatus(code = HttpStatus.UNAUTHORIZED)
     public Result<String> sessionInvalid() {
         return ResultUtil.error(HttpStatus.UNAUTHORIZED.value(), "session失效");
     }
    复制代码
Spring Security系列之Session管理(十四)

Session的并发策略

  1. 配置MerryyouSecurityConfig
    http.
    ......
            .maximumSessions(1)//最大session并发数量1
            .maxSessionsPreventsLogin(false)//false之后登录踢掉之前登录,true则不允许之后登录
            .expiredSessionStrategy(new MerryyounExpiredSessionStrategy())//登录被踢掉时的自定义操作
    .....
    复制代码
  2. 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("并发登录!");
     }
    }
    复制代码
Spring Security系列之Session管理(十四)
当maxSessionsPreventsLogin(true)可参考: Spring-Security

集群环境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管理(十四)
关于更多Spring Session可参考:程序猿DD

以上所述就是小编给大家介绍的《Spring Security系列之Session管理(十四)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能网站建设指南(第二版)

高性能网站建设指南(第二版)

Steve Souders / 刘彦博 / 电子工业出版社 / 2015-5 / 55.00元

《高性能网站建设指南:前端工程师技能精髓》结合Web 2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南:前端工程师技能精髓》中,作者给出了14条具体的优化......一起来看看 《高性能网站建设指南(第二版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码