react+koa+mongodb+redis 个人技术博客
回复 (10)
W
似乎你这个叫做nonce更合适。大家一般对于token的理解是一段时间内可重复使用的令牌。csrf token虽然单次使用 但对并发没要求。
H
感觉这个就是这样设计的效果呢
Z
你这个自相矛盾呀,又只能使用一次,又要同时并发。矛盾了。
J
队列或加锁,如果是分布式,就用redis加锁.
S
暂时忽略token只能用一次合不合理,但更通用的理解应该是:“请求需要携带一次性凭证(这里是token),但由于客户端发起请求出现并行调用,出现一个请求成功,其他的请求失败”。
上述场景,出现多个请求中的一个成功而其他失败,这种现象是合理的,并不算BUG,但如果我们更希望另外一种行为:“第一个请求成功响应后,其他请求再响应成功或失败”,针对后者的一种应对方案:
维护凭证的使用状态(init, pending...),reqeust凭证是init状态则进入处理,pending状态则进入等待响应队列,request响应完成后,删除凭证并响应等待队列中的其他请求
等待队列中的请求响应成功还是失败看业务决定,同时也要考虑进入处理的request出错情况。
J
感觉这个问题可以忽略。如果实在要压测,可以先屏蔽token使用一次的检验。
O
引用 tinycold@oyosc 显然只能使用一次就刷新是很不科学的啊,这样你Redis不停就写入,压力也大。 不如试试一开始生成两个token,一个是Auth Token,一个是Refresh Token,设置...
@tinycold 这种更适合网页授权吧?想问下如果只能使用一次有没有其他更好的办法呢?
T
引用 oyosc@yinxin630 时效就是半小时,半小时以内使用了一次就重新生成个token,未使用过期了就需要重新登录
@oyosc 显然只能使用一次就刷新是很不科学的啊,这样你Redis不停就写入,压力也大。 不如试试一开始生成两个token,一个是Auth Token,一个是Refresh Token,设置Auth Token的时间为半小时,Refresh Token的时间长一点。当Auth Token过期时自动带上Refresh Token,生成新的Auth Token返回,如果生成新的Auth Token时发现刚刚已经生成了新的Auth Token,那就把刚刚生成的Auth Token直接返回。
O
Y
token只能使用一次很不科学吧, 怎么也得有个时效啊
参与回复
登录后即可参与回复。登录