关于AspNetUserTokens表的问题
来源:11-9 【应用】定制用户模型并添加初始化用户数据

菠萝吹雪gz
2021-02-20
课程中老师您讲的是这个表中仓储session 可以强制 让其过期。我的理解是:既然使用 jwt token 这张表种 可以仓储 refreshToken或者 token 在发现某个token 被利用 攻击网站 可以在这里面 强制 让其 失效 这样一定程度上 可以解决 token 一旦颁发 则无法取消。 不知到这样理解是否正确
写回答
1回答
-
阿莱克斯刘
2021-02-27
吹雪同学你好,课程中出现的AspNetUserTokens这张表是asp identity框架自带的、自动生成的,其实我们完全没有使用过这张表。
对于你的问题,我们应该从“无状态”这个角度来理解。jwt的优势是什么?就是无状态,可以减少客户端与后端的冗余通讯操作。既然是无状态,我们的后端就不应该对token的状态做出限制,也就是说我们后端不应该保存jwt。
而jwt的劣质也恰恰是无状态,一旦颁发无法取消、有暴露用户信息的风险,等等。
你的问题其实很简单,使用jwt的话你能不能受得了无法取消、无法控制?如果受得了,就用jwt;受不了就还是老老实实用session。
不过,你的问题中说的倒也是一个解决方案(解决方案还有很多很多,比如使用redis、比如hash一下jwt)。不过,如果我们要取消一个已经发布的jwt,那么我们无论如何也要在后端保存token的全部或部分信息(可以保存整个jwt、或者hash一下、也可以只保存jwt的id)。只要我们保存了jwt信息,就代表jwt已经从无状态转化为有状态了(因为我们后端可以处理他们了),那么也就失去无状态token的意义了。
问题非常好,非常值得我们研究
00