Skip to content

HTTP_SESSIONS HTTP Session 持久化存储表

记录 HTTP Session 的会话 ID、登录用户、创建时间、最近访问时间、过期时间、IP 地址、集群节点、客户端信息和序列化会话数据。该表用于分布式 Session 持久化、在线用户统计、登录审计和异常访问排查。

系统支持三种会话存储模式,通过系统设置 sys.session.store 配置:

  • 内存模式memory):Session 存储在 JVM 内存中,重启丢失,单节点模式下使用。
  • DB 模式db):Session 持久化到本表,集群节点共享读写,不需要额外中间件。
  • Redis 模式redis):Session 存储在 Redis,读写性能最高,需要提前部署 Redis。

选择建议:单机开发用内存模式;生产集群有 Redis 优先用 Redis 模式,没有 Redis 用 DB 模式。 极端情况下可通过 JVM 参数 -Dsucc.sessionStore=memory 强制切换到内存模式。

会话数据、IP 地址和客户端信息属于安全审计数据,不应公开给无关人员。

位置

模型路径:/sysdata/data/tables/sec/HTTP_SESSIONS.tbl

物理表名:SZSYS_5_HTTP_SESSIONS

表结构

字段名字段类型字段描述
SESSION_IDVARCHAR(128)HTTP Session ID,主键
USER_IDVARCHAR(64)当前登录用户 ID
IP_ADDRESSNUMBER(16)登录或最近访问时记录的 IPv4 地址
CLUSTER_NODEVARCHAR(128)会话创建时所在集群节点,关联 CLUSTERNODES
USER_AGENT_IDNUMBER(8)登录设备的 User-Agent 标识,关联 USER_AGENTS
CREATE_TIMETIMESTAMP会话创建时间
LAST_ACCESS_TIMETIMESTAMP最近访问时间
EXPIRY_TIMETIMESTAMP会话过期时间
SESSION_DATABLOB序列化后的 Session 属性数据(Apache Fury 序列化)

Session ID 格式

格式为 <PREFIX>-<HASH8><UUID24>,无前缀时省略横线:

  • PREFIX — 认证渠道前缀
  • HASH8 — 标识符的 8 位十六进制哈希,携带用户特征
  • UUID24 — 随机 UUID 去横线后取后 24 位
前缀认证类型说明HASH8 输入
PATbearerPAT / Bearer TokenuserId@userDirectory
PWurl_password账号密码登录userId@userDirectory
CERTcert证书授信应用登录appId
AUTHaccess_tokenOAuth2 access_tokenappId

表索引

类型名称字段列表是否唯一说明
主键PRIMARYSESSION_ID唯一标识一条 HTTP Session 记录
索引---该表未定义其他索引

使用注意

  1. 无论哪种存储模式,系统都会向本表写入一条记录用于在线用户统计和登录审计。区别在于:DB 模式会写入 SESSION_DATA 字段保存完整的 Session 属性数据;Redis 和内存模式只写入用户 ID、时间、IP 等元数据字段,不写 SESSION_DATA
  2. SESSION_ID 是 HTTP Session 的唯一标识,和业务用户 ID 不是同一概念。格式见 Session ID 格式
  3. CREATE_TIME 在会话创建时写入,不再变更。
  4. LAST_ACCESS_TIME 每次请求结束时更新,用于活跃度统计和缓存版本号判断。
  5. EXPIRY_TIME 标记会话过期时间。过期会话不会立即删除,查询时通过 EXPIRY_TIME > now() 过滤,历史数据由后台任务或手动清理。
  6. SESSION_DATA 为 BLOB,存储 Apache Fury 序列化的 Session 属性。仅应由 SessionRepository 读写,业务查询不要依赖其内部格式。
  7. CLUSTER_NODE 记录会话创建时所在节点。分布式模式下会话可在任意节点恢复(会话漂移),此时该字段仍是创建节点,不代表当前服务节点。
  8. IP_ADDRESS 存储为整数格式的 IPv4 地址,方便按 IP 范围查询审计日志。
微信公众号微信公众号:山川软件