如何在PyJWT Django中注销和销毁令牌?

wko9yo5t  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(138)

我在PyJWT中做了一个token,像这样:

import jwt
import datetime

payload = {
    "id": 1,
    "exp": datetime.datetime.utcnow() + datetime.timedelta(minutes=1000),
    "iat": datetime.datetime.utcnow()
}
token = jwt.encode(payload, 'secret', algorithm='HS256')

字符串
然后发送到前端,并像这样检索我的有效载荷:

payload = jwt.decode(token, 'secret', algorithms=['HS256'])


现在我想销毁服务器中的令牌并注销。怎么办?

a0x5cqrl

a0x5cqrl1#

所以我找到了解决办法。*JWT令牌不可销毁 *。最好的方法是在数据库中创建一个表,比如blacklist,然后在调用logout**方法时添加死令牌。
然后,当尝试检查用户令牌验证时,只需检查该表,如果令牌存在,则不应接受user和return User Not Authenticated

成功

qnyhuwrf

qnyhuwrf2#

从设置中更改密钥。
请注意,这将有效地注销所有用户。使用旧密钥发布的JWT将无效。

相关问题