zuixinwenyue 最近的时间轴更新
zuixinwenyue

zuixinwenyue

V2EX 第 609152 号会员,加入于 2023-01-04 18:23:13 +08:00
zuixinwenyue 最近回复了
1 天前
回复了 saltedFishX 创建的主题 生活 跟女友吵架怎么解决
把工资要回来!
@edcopclub 两个 token 要泄露都会泄露
@fun201108 都是 httponly 有什么问题?
9 天前
回复了 Jacefan 创建的主题 Android 年底想给妈妈换个手机, 2k 上下选什么?
@anchors 你认真的吗?
9 天前
回复了 Jacefan 创建的主题 Android 年底想给妈妈换个手机, 2k 上下选什么?
蹲一个答案 我也打算给父母换手机;
@SethShi oauth2.0 是提供授权码,最后用授权码换回来的就是双 token 。
网上说什么的都有 有说是为了让用户无感续签,之前做的项目是有状态的 每次用户请求进来都会给 token 续期。我之前面试也被问过这个问题 我回答的就是用户带 token 进来验证成功就续期一下 现在想起来问的应该是双 token 。但是我理解使用双 token 不是为了续签,更是为了追求性能+用户可控性一个折中的方案;
@zuixinwenyue
先说一些传统的 token 模式有状态和无状态
1.有状态:cookie 或者 uuid 生成一个 token 放请求头里,这些都属于有状态。服务侧缓存 token 信息
2.无状态: jwt 本身就带了 token 的信息&用户信息;

分析一下痛点,可能举例不完善:

有状态: 每次请求进来需要查询缓存啊 or 数据库,影响性能
可以做判断 token 是否存在啊 用户是否登录过期啊 用户有没有被禁用 也可以做到用户信息发生修改 踢用户下线之类的操作 只允许一端登录啊。可控性非常大;

无状态: 无状态的话就不需要查询数据库了,从性能来讲肯定是比有状态要好的,服务侧拿到只需要验签就可以。
缺点也很明显,上面说到有状态能做的都不行

双 token 我自己感觉是折中了一下 在需要性能+用户可控方面折中,一般来讲 accessToken 是无状态的用于快速验证 过期时间较短,refreshToken 是有状态 用于判断用户信息之类的操作 过期时间较长。这样就可以在性能和用户可控方面折中啦。
以上是我的浅见
@zuixinwenyue 没想到拍了回车就回复了
只是表示讨论,国内好多大厂对外开放的 api 都是双 token 模式,肯定是有一定优势的,我说一下我自己的理解吧。
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1183 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 17:28 · PVG 01:28 · LAX 09:28 · JFK 12:28
♥ Do have faith in what you're doing.