server.servlet.session.timeout: 12h(HTTP 会话的超时时间为 12 小时)

从你提供的配置文件(应该是 Spring Boot 的 application.ymlapplication.properties 文件)来看,以下部分与会话超时时间相关:

yaml 复制代码
server:
  servlet:
    session:
      timeout: 12h
#      timeout: 30
      cookie:
        name: VENDER_SID

会话超时时间的设置

  • server.servlet.session.timeout: 12h

    • 这行配置明确指定了 HTTP 会话的超时时间为 12 小时
    • 在 Spring Boot 中,server.servlet.session.timeout 用于设置会话的最大不活动时间,单位可以是秒(默认)、分钟(m)、小时(h)等。
    • 这里 12h 表示 12 小时,也就是 43,200 秒。
  • #timeout: 30

    • 这行被注释掉了。如果没有 12h 的配置,超时时间会是 30(可能是 30 分钟或 30 秒,取决于上下文,但通常默认单位是分钟)。但由于 12h 生效,这行不起作用。
  • cookie.name: VENDER_SID

    • 这指定了会话的 cookie 名称为 VENDER_SID,而不是默认的 JSESSIONID。客户端通过这个 cookie 跟踪会话。

ADMIN_ID 的关系

在你的代码中:

java 复制代码
request.getSession().setAttribute(Constants.ADMIN_ID, admin.getId());
  • Constants.ADMIN_ID 被存储到会话中,它的生命周期与会话一致。
  • 根据配置文件,会话的超时时间是 12 小时 。这意味着:
    • 用户登录后,ADMIN_ID 被写入会话。
    • 如果用户在 12 小时内没有任何活动(即没有发送新的请求),会话会过期,ADMIN_ID 会随之失效。
    • 如果用户在这 12 小时内保持活跃(发送请求),会话会自动续期,ADMIN_ID 会一直有效。

其他相关配置的影响

  • server.tomcat.max-threads: 3000
    • 设置 Tomcat 的最大线程数为 3000,与会话超时无关,只是影响服务器的并发处理能力。
  • 没有手动设置 setMaxInactiveInterval
    • 从配置文件来看,你没有在代码中手动调用 request.getSession().setMaxInactiveInterval(),因此会话超时完全由 server.servlet.session.timeout 控制。

总结

  • 登录一次后 ADMIN_ID 的过期时间

    • 根据你的配置,ADMIN_ID 在会话中的过期时间是 12 小时12h)。
    • 如果用户在 12 小时内没有活动,会话超时,ADMIN_ID 失效。
    • 如果用户持续活跃,会话不会过期,ADMIN_ID 会一直保留,直到手动注销(例如调用 session.invalidate())或服务器重启。
  • 验证方法

    • 你可以在登录后打印会话的超时时间来确认:

      java 复制代码
      System.out.println("Session timeout: " + request.getSession().getMaxInactiveInterval());

      应该输出 43200(12 小时的秒数)。

  • 注意事项

    • 如果你的应用还依赖 JWT(从之前的 JwtUtils.createToken 看可能有),JWT 的过期时间可能是独立的,需要检查 JwtUtils 的实现来确认 token 的生命周期。
    • 如果需要调整超时时间,可以直接修改 timeout: 12h 为其他值,例如 24h30m

这个配置回答了你的问题:ADMIN_ID 在登录后会存活 12 小时,除非用户活跃或手动注销。

相关推荐
色的归属感2 小时前
wireshark抓包分析数据怎么看 wireshark使用教程_wireshark怎么看
websocket·网络协议·tcp/ip·http·网络安全·https·udp
鹅肝手握高V五色2 小时前
App Usage v5.57 Pro版 追踪手机及应用使用情况
websocket·网络协议·tcp/ip·http·网络安全·https·udp
iOS技术狂热者3 小时前
Android flutter项目 启动优化实战(一)使用benchmark分析项目
websocket·网络协议·tcp/ip·http·网络安全·https·udp
仙女很美哦3 小时前
FlutterWeb实战:02-加载体验优化
websocket·网络协议·tcp/ip·http·网络安全·https·udp
iOS技术狂热者11 小时前
使用抓包大师(sniff master)进行手机端iOS抓包的配置步骤
websocket·网络协议·tcp/ip·http·网络安全·https·udp
珹洺15 小时前
Java-servlet(十)使用过滤器,请求调度程序和Servlet线程(附带图谱表格更好对比理解)
java·开发语言·前端·hive·hadoop·servlet·html
Dontla17 小时前
Python Flask并发demo(http并发与锁)独占接口、monkey功能还不太确定
python·http·flask
白露与泡影19 小时前
SpringBoot 最大连接数及最大并发数是多少?
spring boot·后端·firefox
sukida10019 小时前
Firefox 浏览器同步一个账户和书签网址
android·linux·firefox
金丝猴也是猿19 小时前
如何抓取手机与服务器通信包?三种方法详解
websocket·网络协议·tcp/ip·http·网络安全·https·udp