使用 djangorestframework_simplejwt 库时,向自定义视图进行 POST 请求。
我能够获得以下访问令牌。
我已经探索了如何向响应体添加更多信息,并且现在想知道如何通过添加iat声明、用户名和今天的日期来自定义有效载荷数据。
#urls.py
path('api/token/', MyTokenObtainPairView.as_view(), name='token_obtain'),
#views.py
class MyTokenObtainPairView(TokenObtainPairView):
serializer_class = MyTokenObtainPairSerializer
我能够获得以下访问令牌。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTkwOTEwNjg0LCJqdGkiOiI3M2MxYmZkOWNmMGY0ZjI3OTY4MGY0ZjhlYjA1NDQ5NyIsInVzZXJfaWQiOjExfQ.5vs0LmNGseU6rtq3vuQyApupxhQM3FBAoKAq8MUukIBOOYfDAV9guuCVEYDoGgK6rdPSIq2mvcSxkILG8OH5LQ
通过访问https://jwt.io/,我可以看到当前有效载荷为
{
"token_type": "access",
"exp": 1590910684,
"jti": "73c1bfd9cf0f4f279680f4f8eb054497",
"user_id": 11
}
所以,我们可以看到token的第二部分是有效载荷 - 包含声明。我已经探索了如何向响应体添加更多信息,并且现在想知道如何通过添加iat声明、用户名和今天的日期来自定义有效载荷数据。
token.current_time
而不是datetime.datetime.now()
。token.current_time
是在创建Token
实例时计算的,然后用于推导其他数据,例如到期时间。稍后使用datetime.now()
可能会提供与最初计算的时间戳不同的时间戳。 - David M.