【发布时间】:2020-06-23 06:04:02
【问题描述】:
如何获取jwt token的过期时间或者发布时间,在Django rest框架简单的jwt库中。我需要传递令牌过期时间以响应客户端。
【问题讨论】:
标签: django-rest-framework django-rest-framework-simplejwt
如何获取jwt token的过期时间或者发布时间,在Django rest框架简单的jwt库中。我需要传递令牌过期时间以响应客户端。
【问题讨论】:
标签: django-rest-framework django-rest-framework-simplejwt
您必须编写自定义序列化程序。如果是 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
【讨论】: