【已解决】KOCA安全认证 session timeout如何配置?Tomcat session 对其有何影响?

koca安全认证session过期时间如何配置

koca安全认证提供对于spring session的过期时间控制,控制配置如下:

koca:
  security:
    session-storage:
      session-expire: 1800  ##单位s

如果使用的是2.7以及之前版本,可以使用配置:

auth:
  security:
    session-storage:
      session-expire: 1800  ##单位s

Tomcat的session对其有影响吗

tomcat的session与spring session是独立的不同的概念

  • 在tomcat中,session timeout是指服务端session的过期时间,是由tomcat维护,当客户端与服务端一定时间内没有交互时,session会被服务器自动销毁。防止服务器上面保存了太多session二导致服务器负载过高。
  • spring session是由spring维护的,以key-value形式保存。session timeout是指身份验证信息的失效时间。如果客户端一段时间没有请求,会自动清除对应的登录信息。

koca返回给前端的sessionId为spring session 的key,本质上tomcat的session过期并不影响前端传递sessionId给后端安全认证,只要spring session中保存的用户信息没有过期,就能正常访问。

验证:

  • 启动koca前端与后端服务,配置tomcat的session过期时间1m,安全认证配置使用默认30分钟。

​ 在登陆后五到六分钟访问,会发现请求依然正常,是登陆状态。

  • 将安全认证session配置改为5s,tomcat session使用默认配置。

    ​ 在登录后十几秒后访问,报会话已过期。

结论:

​ tomcat的session过期并不会影响spring session保存的登录信息。

2 个赞

网关集群,auth.yml文件的koca.security.session-storage.strategy-name由memory修改成redis,session-expire: 18000,结果不到一个小时又提示会话过期了

已在4.0及之后的版本修复redis策略下,此配置不生效的问题。
已对您使用的版本进行修复,可以指定
koca-boot-auth-autoconfigure
包版本至3.4.2