gpt4 book ai didi

django - 使用 Django rest-framework-jwt 撤销 token

转载 作者:行者123 更新时间:2023-12-01 12:23:14 28 4
gpt4 key购买 nike

我正在考虑允许用户撤销以前颁发的 token (是的,即使它们被设置为在 15 分钟后过期),但没有找到任何方法来使用 DRF-jwt .

现在,我正在考虑几种选择:

  • 希望 SO 上的某个人会告诉我如何开箱即用 ;-)
  • 使用 jti 字段作为计数器,并在撤销时要求 jti > last jti。
  • 在签名过程中添加用户级盐,并在撤销时更改它
  • 将实时 token 存储在某些 Redis 数据库中

  • 以上任何一条路都可以走吗?

    最佳答案

    我们在我们的项目中是这样做的:

    添加 jwt_issue_dt到用户模型。

    添加 original_iat到有效载荷。所以 token 刷新不会修改这个字段。

    比较 original_iat来自有效载荷和 user.jwt_issue_dt :

    from calendar import timegm
    from rest_framework_jwt.authentication import JSONWebTokenAuthentication

    class CustomJSONWebTokenAuthentication(JSONWebTokenAuthentication):

    def authenticate_credentials(self, payload):
    user = super(CustomJSONWebTokenAuthentication, self).authenticate_credentials(payload)
    iat_timestamp = timegm(user.jwt_issue_dt.utctimetuple())
    if iat_timestamp != payload['iat']:
    raise exceptions.AuthenticationFailed('Invalid payload')
    return user

    要撤销 token ,您只需更新字段 user.jwt_issue_dt .

    关于django - 使用 Django rest-framework-jwt 撤销 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108046/

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