Adding claims to DRF simple JWT payload

前端 未结 1 1152
深忆病人
深忆病人 2021-01-27 04:13

Using djangorestframework_simplejwt library, when POST to a custom view

#urls.py
path(\'api/token/\', MyTokenObtainPairView.as_view(), name=\'token_obtain\'),

#         


        
相关标签:
1条回答
  • 2021-01-27 05:01

    As you already created a subclass for the desired view (MyTokenObtainPairView) and a subclass for its corresponding serializer (MyTokenObtainPairSerializer), add the following to the serializer

    class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
    
        ...
    
        @classmethod
        def get_token(cls, user):
            token = super().get_token(user)
    
            # Add custom claims
            token['iat'] = datetime.datetime.now()
            token['user'] = user.username
            token['date'] = str(datetime.date.today())
    
            return token
    

    Then, when you POST to that same location, you'll get an access token like this

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTkwOTE0MTk4LCJqdGkiOiJhZDZmNzZhZjFmOGU0ZWJlOGI2Y2Y5YjQ4MGQzZjY2MiIsInVzZXJfaWQiOjExLCJpYXQiOjE1OTA5MTc0OTgsInVzZXIiOiJ0aWFnbyIsImRhdGUiOiIyMDIwLTA1LTMxIn0.-5U9P-WWmhlOenzCvc6b7_71Tz17LyNxe_DOMwwqH4RqrNsilVukEcZWFRGupLHRZjIvPya2QJGpiju9ujzQuw
    

    Using JWT you can see the Payload changing accordingly

    {
      "token_type": "access",
      "exp": 1590914198,
      "jti": "ad6f76af1f8e4ebe8b6cf9b480d3f662",
      "user_id": 11,
      "iat": 1590917498,
      "user": "tiago",
      "date": "2020-05-31"
    }
    
    0 讨论(0)
提交回复
热议问题