--- name: jeecg-token-mechanism description: 源服务器jeecg的token机制(JWT+Redis双层、滑动续期),决定中转刷新策略 metadata: type: reference --- 源服务器 jeecg 的 token 机制(调研 `data-center-boot-spring3` 代码得出): - **JWT 带 exp**(`JwtUtil.sign` 用 `withExpiresAt`,exp = 生成时间 + 3.5天),但 **exp 不是硬性过期**。 - **真正失效条件**:Redis key `prefix_user_token:` 被删除(主动 logout 或 7天不活跃)。Redis TTL = 604800秒(7天)。 - **滑动续期**:`ShiroRealm.jwtTokenRefresh()` 每次请求(Redis key 存在时)重置 TTL 为 7 天,且 JWT exp 到期时静默重签。 - **失效返回**:HTTP 401,body `"Token失效,请重新登录!"`,token 从 `X-Access-Token` 请求头读取。 **对中转的影响**:中转每 10 秒探活会刷新源服务器 Redis TTL,token 实际不会自然过期(除非被主动 logout)。预过期刷新基于 JWT exp,因滑动续期很少触发,作为双保险保留。探活失效/被动401 后必须 `forceRefresh`(先清缓存再换新),否则命中失效 token 死循环。 **RSA**:源服务器 `RSAEncryptUtils.decrypt1` 用 `Cipher.getInstance("RSA")` = `RSA/ECB/PKCS1Padding`,公钥 X.509、私钥 PKCS#8、明文 UTF-8、密文 Base64,1024位。中转 `RsaEncryptUtil` 已对齐。