gpt4 book ai didi

Django rest framework JWT,删除jwt token

转载 作者:行者123 更新时间:2023-12-02 00:54:47 34 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

关于Django rest framework JWT,删除jwt token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55101650/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com