Django rest框架JWT,删除jwt令牌

时间:2019-03-11 12:14:22

标签: django python-3.x django-rest-framework jwt django-rest-framework-jwt

如何手动使django rest框架JWT令牌过期?因为它不将令牌存储在数据库中。有什么正确的方法可以使令牌过期吗?

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

1 个答案:

答案 0 :(得分:0)

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

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