当前位置: 首页 > news >正文

大型网站开发公司网站工商网监标

大型网站开发公司,网站工商网监标,合肥网站系统建设公司,完整的活动策划方案目录 手动更新过期时间自定义 HttpSessionListener自定义 RedisOperationsSessionRepository 在 Spring Boot 集成 Redis 存储 Session 的场景下,调用 setAttribute 方法本身不会重置 Session 的过期时间。Session 的过期时间主要由以下配置决定: serve…

目录

      • 手动更新过期时间
      • 自定义 `HttpSessionListener`
      • 自定义 `RedisOperationsSessionRepository`

在 Spring Boot 集成 Redis 存储 Session 的场景下,调用 setAttribute 方法本身不会重置 Session 的过期时间。Session 的过期时间主要由以下配置决定:

  • server.servlet.session.timeout 配置:这是 Spring Boot 提供的通用配置项,用于设置 Session 的超时时间,单位为秒。

如果希望在每次调用 setAttribute 时重置 Session 的过期时间,可以通过以下方式实现:

手动更新过期时间

在调用 setAttribute 后,获取当前 Session 的剩余过期时间,并重新设置该过期时间。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpSession;@RestController
public class SessionController {@GetMapping("/setSessionAttribute")public String setSessionAttribute() {HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();session.setAttribute("key", "value");session.setMaxInactiveInterval(1800); // 设置新的过期时间(秒)return "Session attribute set and timeout updated";}
}

自定义 HttpSessionListener

实现 HttpSessionListener,在监听到 Session 属性变更事件时,重置过期时间。

import org.springframework.stereotype.Component;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;@Component
public class SessionListener implements HttpSessionListener {@Overridepublic void sessionCreated(HttpSessionEvent se) {}@Overridepublic void sessionDestroyed(HttpSessionEvent se) {}@Overridepublic void attributeAdded(HttpSessionBindingEvent event) {event.getSession().setMaxInactiveInterval(1800); // 设置新的过期时间(秒)}@Overridepublic void attributeRemoved(HttpSessionBindingEvent event) {}@Overridepublic void attributeReplaced(HttpSessionBindingEvent event) {event.getSession().setMaxInactiveInterval(1800); // 设置新的过期时间(秒)}
}

自定义 RedisOperationsSessionRepository

自定义 RedisOperationsSessionRepository,在保存 Session 时更新过期时间。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;@Configuration
@EnableRedisHttpSession
public class RedisConfig {@Value("${server.session.timeout}")private int sessionTimeout = 1800;@Beanpublic RedisOperationsSessionRepository sessionRepository(RedisConnectionFactory connectionFactory) {RedisOperationsSessionRepository repository = new RedisOperationsSessionRepository(connectionFactory);repository.setDefaultMaxInactiveInterval(sessionTimeout);return repository;}
}

通过以上方法,可以在调用 setAttribute 时重置 Session 的过期时间。

http://www.dtcms.com/a/475690.html

相关文章:

  • asp网站图片如何做微信朋友圈网站
  • 威海做网站多少钱南京江宁区住房建设局网站
  • 网站建设或网站优化排名dede 后门暴网站
  • 原创音乐网站源码新闻摘抄四年级下册
  • 网站架构设计图东莞做网站的公司
  • 栈和队列的学习
  • 怎么样做网站页面wordpress短代码参数值带
  • 网站建设 会计分录wordpress 性能怎么样
  • Go语言技术与应用(四):网络编程之TCP端口扫描器实现
  • 济南正规网站制作怎么选择兰州做网站哪家专业
  • 企业的网站做一个要多少网站建设经验王者荣耀恺和
  • 个人网站备案核验单郴州
  • 共晶焊料选择指南
  • 一个优秀的个人网站海南人才网
  • 福田皇岗社区做网站wordpress 图库主题
  • 网站建设视频教程集南宁网站推广营销
  • 网站建设方案实施西安网站群公司
  • 网络直播网站开发国外服务器购买平台
  • 建设网站的流程可分为哪几个阶段推广方式都有哪些
  • DVWA通关全解
  • 广州网站建设是什么成都旅游网站建设规划方案
  • 企业网站推广的线上渠道有哪些网站建设吕凡科技
  • DOM 解析
  • 网站价值 批量查询免费网页设计教程视频教程
  • 想做一个个人网站怎么做长沙网站推广公司哪家好
  • 建网站要多少钱建一个网络平台需要多少钱舆情优化
  • 一元购网站的建设营销型网站大全
  • 互动类网站滁州市建设工程管理处网站
  • 好网站上辽宁建设工程信息网站
  • 外吐司做的阿里巴巴的网站wordpress文章加背景颜色