【问题标题】:Exp or iat time in rest_framework_simplejwt tokenrest_framework_simplejwt 令牌中的 Exp 或 iat 时间
【发布时间】:2020-06-23 06:04:02
【问题描述】:

如何获取jwt token的过期时间或者发布时间,在Django rest框架简单的jwt库中。我需要传递令牌过期时间以响应客户端。

【问题讨论】:

    标签: django-rest-framework django-rest-framework-simplejwt


    【解决方案1】:

    您必须编写自定义序列化程序。如果是 TokenObtainPairView 视图,您要为其返回令牌的到期时间,例如,创建一个继承自 TokenObtainPairView 的自定义视图和一个继承自 TokenObtainPairSerializer 的自定义序列化程序。

    例如:

    在你的urlpatterns

    path('api/token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'),
    

    自定义视图:

    from rest_framework_simplejwt.views import TokenObtainPairView
    
    
    class CustomTokenObtainPairView(TokenObtainPairView):
        serializer_class = CustomTokenObtainPairSerializer
    

    自定义序列化器:

    from datetime import datetime
    
    from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
    
    class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
        def validate(self, attrs):
            data = super().validate(attrs)
    
            refresh = self.get_token(self.user)
    
            data['refresh'] = str(refresh)
            data['access'] = str(refresh.access_token)
    
            # Add custom data here
    
            data['access_token_lifetime'] = str(refresh.access_token.lifetime)
            data['access_token_expiry'] = str(datetime.now() + refresh.access_token.lifetime)
    
            if api_settings.UPDATE_LAST_LOGIN:
                update_last_login(None, self.user)
    
            return data
    

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 2017-03-29
      • 2022-01-04
      • 2021-09-26
      • 1970-01-01
      • 2016-01-24
      • 2023-03-21
      • 2020-08-27
      • 1970-01-01
      相关资源
      最近更新 更多