繁体   English   中英

Django rest framework JWT,删除jwt token

[英]Django rest framework JWT , delete the jwt token

如何手动使 django rest 框架 JWT 令牌过期? 因为它不会将令牌存储在数据库中。 是否有任何正确的方法使令牌过期?

我正在考虑继续使用中间件,其中每个用户都将存储令牌。 在每次登录请求时,我们都会为用户更新数据库中的令牌。 在每个请求中,我们将从请求中获取令牌并与存储的令牌进行比较,如果不匹配,则我们将返回禁止的。 我不知道它是否是正确的方法!

您不能使 JWT 令牌过期,该令牌是自包含的,只能在其有效负载中存储的时间后过期。 您可以做的是同时使用刷新和访问令牌,并为访问令牌设置少量时间。 话虽如此,您 FE 应该在访问令牌过期时更新它。 您应该将刷新令牌存储在数据库中,当您需要删除访问令牌时,您可以使用刷新令牌阻止用户更新它。

编辑:如果您想在数据库中存储令牌,您可能根本不想使用 JWT 和无状态授权。 而是坚持使用基于会话的授权。 当您想要使令牌过期时 - 您可以从数据库中删除会话。

更新 2 :在这种情况下,人们通常做的是拥有一个快速访问的数据库(如 redis),它的项目很少。 我们没有将 jwt 令牌存储在数据库中,而是创建一个包含被阻止令牌的表(我假设删除的令牌数量将远少于活动令牌的数量)。 但是,现在您牺牲了无状态授权,转而在每次授权用户时检查令牌是否在数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM