FPGA新手避坑:用Verilog写边沿检测,为什么我仿真的波形总是不对?
2026/4/28 18:09:01
在现代 Web 应用中,基于 JWT 的无状态认证广泛使用。然而,为了兼顾安全性和用户体验,通常采用双 Token 机制(Access Token + Refresh Token)。本文将详细阐述如何安全地实现 Refresh Token 的存储、轮换,并确保权限变更能实时生效。
由于 Refresh Token 使用频率低,将其存储在关系型数据库中是安全且高效的选择。以下是推荐的表结构:
CREATETABLErefresh_tokens(idBIGINTPRIMARYKEYAUTO_INCREMENT,session_idVARCHAR(128)NOTNULLUNIQUECOMMENT'会话唯一标识',user_idVARCHAR(64)NOTNULL,token_hashVARCHAR(255)NOTNULLCOMMENT'Refresh Token 的 BCrypt 哈希值',device_infoVARCHAR(500)COMMENT'设备或浏览器信息',login_channelVARCHAR(50)COMMENT'登录渠道:web/app/wechat等',ip_addressVARCHAR(45),created_atDATETIMENOTNULLDEFAULTCURRENT_TIMESTAMP,expires_atDATETIMENOTNULL,revokedBOOLEANDEFAULTFALSECOMMENT'是否已被撤销',last_used_atDATETIME,use_countINTDEFAULT0COMMENT'使用次数统计',INDEXidx_user_id(user_id),INDEXidx_session_id(session_id),INDEXidx_token_hash(token_hash),INDEXidx_expires_at(expires_at));字段说明:
session_id:会话唯一标识,用于管理特定设备/浏览器的登录状态login_channel:区分登录来源(Web端、App、小程序等)use_count:统计 Refresh Token 被使用的次数session_id(UUID)refresh_tokens表session_id给客户端session_id+ Refresh Token 到/auth/refreshsession_id查询对应的 Refresh Token 记录/auth/logout并传入session_idsession_id将对应 Refresh Token 标记为已撤销