rest_framework_simplejwt 令牌中的 Exp 或 iat 时间

Exp or iat time in rest_framework_simplejwt token

如何获取jwt token过期时间或发行时间,在Django rest framework简单的jwt库中。我需要通过令牌过期时间来响应客户端。

您必须编写自定义序列化程序。例如,如果它是您想要 return 令牌到期时间的 TokenObtainPairView 视图,则创建一个继承自 TokenObtainPairView 的自定义视图和一个继承自 [=17] 的自定义序列化程序=].

例如:

在你的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