生成的JWT是无法撤销的。这个是由什么决定的,是JWT本身的算法决定的吗?
还有一个问题是,JWT是如何来校验一个Token是否有效的?
同样的header.payload.signature,每次生成的token都不一样,它怎么才能知道某个token是有效的?
生成的JWT是无法撤销的。这个是由什么决定的,是JWT本身的算法决定的吗?
还有一个问题是,JWT是如何来校验一个Token是否有效的?
同样的header.payload.signature,每次生成的token都不一样,它怎么才能知道某个token是有效的?
做不到自撤销,但也可以用另一种思路做到相似的自撤销。我是这样做的:
1、每个token都应该有过期时间,一个小时或者十个小时,一般不做永久有效的,我宁愿给某个token十天的有效期,也不会做无限期的。
2、如果需要撤销某个token,那就把该token存到redis中去,设置过期时间避免存储大量的token(这个过期时间比token的过期时间大即可)
3、每次校验token前都先查看redis中是否存在该token;存在:直接认定为无效token;不存在:继续校验token的合法性
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
就是过期时间会写在
token
里或者与token
关联。是
一般会定时清理过期的
token
,并且访问的时候也会先查看token
是否过期。如果没有存到数据库里比如
redis/memcached
或者其他,那就只能在内存里。node
进程重启无效说明并没有存到进程外部,所以应该是内存里。不清楚你需要撤销什么,如果是希望
token
都失效,把秘钥改了就行了。