目录一、存储位置分开讲1. Access Token客户端手机 APP服务端2. Refresh Token刷新令牌决定登录时效客户端APP 本地服务端必须持久存储数据库 / Redis刷新流程体现两端配合二、两种 Token 存储对比表三、补充关键细节一、存储位置分开讲1. Access Token客户端手机 APP存储内存、本地缓存、沙盒、SP/Keychain安卓 /iOS作用每次调用接口带上用来鉴权特点时效短1h/2h泄露风险低就算被截获很快失效服务端不持久存储完整 Access Token服务端一般只存两份关联数据用户 ID 当前有效 Refresh Token可选黑名单已失效的 Access Token过期 / 主动登出的定时清理 Access Token 本身大多是JWT 自包含服务端不用查表存解析就能拿到用户信息。2. Refresh Token刷新令牌决定登录时效客户端APP 本地持久化保存安卓 SharedPreferences、iOS Keychain、数据库不会放内存重启 APP 也还在用来静默换新 Access风险点这个泄露危害极大一旦被盗可无限刷新登录服务端必须持久存储数据库 / Redis核心关键点Refresh Token 服务端一定要存 存储字段一般refresh_token 字符串所属用户 uid过期时间 expire设备标识、客户端版本、创建时间状态正常 / 已注销 / 拉黑刷新流程体现两端配合APP 本地 Access 过期拿本地 Refresh 去请求刷新接口服务端查 Redis/DB这个 Refresh 是否存在、是否过期、是否拉黑校验通过生成新 Access部分方案同时下发新 Refresh续期返回新 Access 给 APP 本地覆盖旧的二、两种 Token 存储对比表令牌客户端是否存服务端是否持久存生命周期Access Token✅ 本地缓存❌ 不持久JWT 无存储短1~4 小时Refresh Token✅ 本地持久化✅ Redis / 数据库存储长7/30/90 天三、补充关键细节JWT 格式的 Access服务端不需要保存靠签名校验Refresh 绝对不能只用 JWT必须服务端入库管控不然无法强制下线改密码、登出、盗号拉黑时服务端直接删除对应 Refresh 即可让设备失效安全规范Refresh 禁止明文存储APP 会加密存放Access 放内存更安全退出页面清空。