问题:
在做项目中login 和logout 的接口自动化时,发现一个奇怪的现象:
在调用login接口之后,获取到token,随后将token作为参数放在logout接口中,
按理来说,使用这个token调用logout之后,这个token随后应该是失效的,但实际上并没有
并且调用logout返回了正确的response.
原因:
问题出在后端的技术架构,导致的如果login和logout在1s内同时发生,logout无法使token失效。
原本的技术架构是:有效的token会放在redis里,无效的,被logout注销或者被refresh刷新的这些token会被放在黑名单里,同样也在redis里。
但后来更改了技术架构:black list这个存放失效token的目录被移除。通过时间戳来判断token是否有效,一个access token自从被创建之后,在其过期之前,都会存在于redis里(过期和失效是两个概念)。如果一个token理应失效,则