Skip to content

Commit b0b8d1e

Browse files
authored
Update docs on serializer customization (#668)
* Update simplejwt settings in * Update documentation on customizing token claims.
1 parent 063e5a2 commit b0b8d1e

File tree

2 files changed

+47
-31
lines changed

2 files changed

+47
-31
lines changed

docs/customizing_token_claims.rst

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,16 @@ generated by the ``TokenObtainPairView``:
2525
2626
return token
2727
28-
class MyTokenObtainPairView(TokenObtainPairView):
29-
serializer_class = MyTokenObtainPairSerializer
28+
.. code-block:: python
29+
30+
# Django project settings.py
31+
...
32+
33+
SIMPLE_JWT = {
34+
# It will work instead of the default serializer(TokenObtainPairSerializer).
35+
"TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.MyTokenObtainPairSerializer",
36+
# ...
37+
}
3038
3139
Note that the example above will cause the customized claims to be present in
3240
both refresh *and* access tokens which are generated by the view. This follows

docs/settings.rst

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,43 @@ Some of Simple JWT's behavior can be customized through settings variables in
1414
...
1515
1616
SIMPLE_JWT = {
17-
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
18-
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
19-
'ROTATE_REFRESH_TOKENS': False,
20-
'BLACKLIST_AFTER_ROTATION': False,
21-
'UPDATE_LAST_LOGIN': False,
22-
23-
'ALGORITHM': 'HS256',
24-
'SIGNING_KEY': SECRET_KEY,
25-
'VERIFYING_KEY': None,
26-
'AUDIENCE': None,
27-
'ISSUER': None,
28-
'JWK_URL': None,
29-
'LEEWAY': 0,
30-
31-
'AUTH_HEADER_TYPES': ('Bearer',),
32-
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
33-
'USER_ID_FIELD': 'id',
34-
'USER_ID_CLAIM': 'user_id',
35-
'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',
36-
37-
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
38-
'TOKEN_TYPE_CLAIM': 'token_type',
39-
'TOKEN_USER_CLASS': 'rest_framework_simplejwt.models.TokenUser',
40-
41-
'JTI_CLAIM': 'jti',
42-
43-
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
44-
'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
45-
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
17+
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=5),
18+
"REFRESH_TOKEN_LIFETIME": timedelta(days=1),
19+
"ROTATE_REFRESH_TOKENS": False,
20+
"BLACKLIST_AFTER_ROTATION": False,
21+
"UPDATE_LAST_LOGIN": False,
22+
23+
"ALGORITHM": "HS256",
24+
"SIGNING_KEY": settings.SECRET_KEY,
25+
"VERIFYING_KEY": "",
26+
"AUDIENCE": None,
27+
"ISSUER": None,
28+
"JSON_ENCODER": None,
29+
"JWK_URL": None,
30+
"LEEWAY": 0,
31+
32+
"AUTH_HEADER_TYPES": ("Bearer",),
33+
"AUTH_HEADER_NAME": "HTTP_AUTHORIZATION",
34+
"USER_ID_FIELD": "id",
35+
"USER_ID_CLAIM": "user_id",
36+
"USER_AUTHENTICATION_RULE": "rest_framework_simplejwt.authentication.default_user_authentication_rule",
37+
38+
"AUTH_TOKEN_CLASSES": ("rest_framework_simplejwt.tokens.AccessToken",),
39+
"TOKEN_TYPE_CLAIM": "token_type",
40+
"TOKEN_USER_CLASS": "rest_framework_simplejwt.models.TokenUser",
41+
42+
"JTI_CLAIM": "jti",
43+
44+
"SLIDING_TOKEN_REFRESH_EXP_CLAIM": "refresh_exp",
45+
"SLIDING_TOKEN_LIFETIME": timedelta(minutes=5),
46+
"SLIDING_TOKEN_REFRESH_LIFETIME": timedelta(days=1),
47+
48+
"TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.TokenObtainPairSerializer",
49+
"TOKEN_REFRESH_SERIALIZER": "rest_framework_simplejwt.serializers.TokenRefreshSerializer",
50+
"TOKEN_VERIFY_SERIALIZER": "rest_framework_simplejwt.serializers.TokenVerifySerializer",
51+
"TOKEN_BLACKLIST_SERIALIZER": "rest_framework_simplejwt.serializers.TokenBlacklistSerializer",
52+
"SLIDING_TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.TokenObtainSlidingSerializer",
53+
"SLIDING_TOKEN_REFRESH_SERIALIZER": "rest_framework_simplejwt.serializers.TokenRefreshSlidingSerializer",
4654
}
4755
4856
Above, the default values for these settings are shown.

0 commit comments

Comments
 (0)