Skip to content

HTTP_SESSIONS HTTP Session 持久化存储表

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

系统支持两种会话存储模式,通过 JVM 参数 -Dsucc.sessionStore 配置:

  • 默认模式default):Session 持久化到本表,集群节点共享读写,不需要额外中间件。
  • Redis 模式redis):Session 存储在 Redis,读写性能最高,需要提前部署 Redis。

选择建议:生产集群有 Redis 优先用 Redis 模式,没有 Redis 用默认模式。未配置或配置未知值时使用默认模式。

会话数据、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 格式

格式为 <HASH8><UUID24>

  • HASH8 — 标识符的 8 位十六进制哈希,携带用户特征
  • UUID24 — 随机 UUID 去横线后取后 24 位

表索引

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

使用注意

  1. 无论哪种存储模式,系统都会向本表写入一条记录用于在线用户统计和登录审计。区别在于:默认模式会写入 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 范围查询审计日志。
微信公众号微信公众号:山川软件