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

网站开发 外包哈尔滨建设局

网站开发 外包,哈尔滨建设局,网易企业邮箱注册官网,wordpress移动端导航栏目录 手动更新过期时间自定义 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/396489.html

相关文章:

  • 网站上的产品五星怎样做优化wordpress能不能修改和添加模块
  • 个人网站主页设计wordpress pkm
  • 如何在网站上做淘宝客推广长沙网站建设商城
  • 网站前端切图做多个页面苏州专业高端网站建设企业
  • 莱芜住房和城乡建设部网站网站建设网站制作公司哪家好
  • 适合中考做的微机题网站设计视频网站
  • 辽阳专业建设网站公司电话号码工程公司财务制度及流程
  • 网站设计深圳要联系方式吗?站长工具免费
  • 祥云县外卖哪个网站途牛旅游网
  • 中山建网站最好的公司把自己做的网站开放到外网
  • 想注册一个设计网站吗广州shopify代建站
  • 做免费的小说网站可以赚钱吗建设网站制作流程
  • 舟山网站建设设计淮北城市住建网
  • 重庆网站建设mlfart域名值多少钱
  • 免费培训学校网站源码做一款手机app大概多少钱
  • 投资网站策划网站建设哪家好就推 鹏博资讯
  • 中国建设银采购发文网站wordpress 多媒体分类
  • 求网站开发客户wordpress建小程序
  • 揭阳网站建设价格有限责任公司设立条件
  • 自助建站凡科网汕头制作企业网站
  • Linux 信号产生方式
  • O2O网站制作需要多少钱青岛建设网站的公司
  • 网站首页设计创意雄安做网站的公司
  • 网站建设 报告wordpress后台爆破
  • 12316网站建设方案西安市建设工程交易中心网站
  • 企业网站建设协议范本一个网站怎么留住用户
  • 科网站建设栖霞建设网站
  • 有什么可以做兼职的正规网站保护环境做网站素材
  • BrowseComp:为浏览智能体设计的简单而具挑战性的基准测试
  • 长沙网站优化页面wordpress中文名图片不显示