本文写的是django3实现jwt

    官方文档

    1. from datetime import timedelta
    2. ...
    3. SIMPLE_JWT = {
    4. 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
    5. 'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
    6. 'ROTATE_REFRESH_TOKENS': False,
    7. 'BLACKLIST_AFTER_ROTATION': True,
    8. 'UPDATE_LAST_LOGIN': False,
    9. 'ALGORITHM': 'HS256',
    10. 'SIGNING_KEY': settings.SECRET_KEY,
    11. 'VERIFYING_KEY': None,
    12. 'AUDIENCE': None,
    13. 'ISSUER': None,
    14. 'AUTH_HEADER_TYPES': ('Bearer',),
    15. 'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
    16. 'USER_ID_FIELD': 'id',
    17. 'USER_ID_CLAIM': 'user_id',
    18. 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
    19. 'TOKEN_TYPE_CLAIM': 'token_type',
    20. 'JTI_CLAIM': 'jti',
    21. 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
    22. 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
    23. 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
    24. }
    25. ACCESS_TOKEN_LIFETIME
    26. datetime.timedelta指定长的访问令牌是如何有效的对象。该timedelta值会在令牌生成期间添加到当前UTC时间,以获得令牌的默认“ exp”声明值。
    27. REFRESH_TOKEN_LIFETIME
    28. 一个datetime.timedelta对象,指定刷新令牌的有效时间。该timedelta值会在令牌生成期间添加到当前UTC时间,以获得令牌的默认“ exp”声明值。
    29. ROTATE_REFRESH_TOKENS
    30. 设置True为时,如果将刷新令牌提交给 TokenRefreshView,则将返回新的刷新令牌以及新的访问令牌。这个新的刷新令牌将通过JSON响应中的“ refresh”键提供。新的刷新令牌将具有更新的到期时间,该时间通过将REFRESH_TOKEN_LIFETIME 设置中的timedelta与发出请求的当前时间相加来确定。如果正在使用黑名单应用程序且BLACKLIST_AFTER_ROTATION设置设置为True,则提交到刷新视图的刷新令牌将添加到黑名单中。
    31. BLACKLIST_AFTER_ROTATION
    32. 设置为时,如果正在使用黑名单应用程序且设置设置为True,则导致提交给的刷新令牌 TokenRefreshView被添加到黑名单ROTATE_REFRESH_TOKENSTrue。您需要添加'rest_framework_simplejwt.token_blacklist',到 INSTALLED_APPS设置文件中才能使用此设置。
    33. 了解有关黑名单应用的更多信息。
    34. UPDATE_LAST_LOGIN
    35. 设置True为时,auth_user表中的last_login字段在登录时更新(TokenObtainPairView)。
    36. 警告:更新last_login将大大增加数据库事务的数量。滥用视图的人可能会降低服务器的速度,这可能是一个安全漏洞。如果确实要这样做,请至少使用DRF限制端点。
    37. ALGORITHM
    38. PyJWT库中的算法,将用于对令牌执行签名/验证操作。使用对称的HMAC签名和验证,可以使用以下算法:'HS256''HS384' 'HS512'。选择HMAC算法时,该SIGNING_KEY设置将同时用作签名密钥和验证密钥。在这种情况下,该 VERIFYING_KEY设置将被忽略。使用非对称RSA签名和验证,可以使用以下算法:'RS256''RS384' 'RS512'。选择RSA算法时,SIGNING_KEY必须将设置设置为包含RSA私钥的字符串。同样, VERIFYING_KEY必须将设置设置为包含RSA公钥的字符串。
    39. SIGNING_KEY
    40. 用于对生成的令牌的内容进行签名的签名密钥。对于HMAC签名,这应该是一个随机字符串,其中的数据位数至少应与签名协议所需的位数相同。对于RSA签名,这应该是一个包含2048位或更长的RSA私钥的字符串。由于Simple JWT默认使用256HMAC签名,因此该SIGNING_KEY设置默认SECRET_KEYdjango项目的设置值。尽管这是Simple JWT可以提供的最合理的默认值,但是建议开发人员将此设置更改为与django项目秘密密钥无关的值。这将使更改令牌时使用的签名密钥更加容易。
    41. VERIFYING_KEY
    42. 验证密钥,用于验证生成的令牌的内容。如果该ALGORITHM设置指定了HMAC算法, VERIFYING_KEY则将忽略该SIGNING_KEY 设置,并使用该设置的值。如果该ALGORITHM设置已指定RSA算法 ,则该VERIFYING_KEY设置必须设置为包含RSA公钥的字符串。
    43. AUDIENCE
    44. 观众声称包含在生成的令牌中和/或在解码的令牌中经过验证。设置为时None,此字段将从令牌中排除,并且未经验证。
    45. ISSUER
    46. 发行人声称包含在生成的令牌中和/或在解码的令牌中经过验证。设置为时None,此字段将从令牌中排除,并且未经验证。
    47. AUTH_HEADER_TYPES
    48. 需要验证的视图将接受的授权标头类型。例如,值'Bearer'表示需要身份验证的视图将查找具有以下格式的标头: 。此设置还可能包含可能的标头类型(例如)的列表或元组。如果以这种方式使用列表或元组,并且身份验证失败,则集合中的第一项将用于在响应中构建“ WWW-Authenticate”标头。Authorization: Bearer <token>('Bearer', 'JWT')
    49. AUTH_HEADER_NAME
    50. 用于身份验证的授权标头名称。默认值为HTTP_AUTHORIZATION接受Authorization请求中的标头。例如,如果你想使用X_Access_Token你的请求头请注明AUTH_HEADER_NAMEHTTP_X_ACCESS_TOKEN在你的设置。
    51. USER_ID_FIELD
    52. 用户模型中的数据库字段,将包含在生成的令牌中以标识用户。建议此设置的值指定一个字段,一旦选择其初始值,该字段通常不会更改。例如,指定“用户名”或“电子邮件”字段将是一个糟糕的选择,因为帐户的用户名或电子邮件可能会更改,具体取决于给定服务中帐户管理的设计方式。这可以允许使用旧的用户名创建新帐户,而现有令牌仍有效,该令牌使用该用户名作为用户标识符。
    53. USER_ID_CLAIM
    54. 所产生的令牌中的声明将用于存储用户标识符。例如,的设置值'user_id'将意味着生成的令牌包括包含用户标识符的“ user_id”声明。
    55. AUTH_TOKEN_CLASSES
    56. 类的点路径列表,这些类指定了允许证明身份验证的令牌类型。有关更多信息,请参见下面的“令牌类型”部分。
    57. TOKEN_TYPE_CLAIM
    58. 用于存储令牌类型的声明名称。有关更多信息,请参见下面的“令牌类型”部分。
    59. JTI_CLAIM
    60. 声明名称,用于存储令牌的唯一标识符。此标识符用于识别黑名单应用中的已撤销令牌。在某些情况下,可能有必要使用默认的“ jti”声明以外的其他声明来存储该值。
    61. SLIDING_TOKEN_LIFETIME
    62. 一个datetime.timedelta对象,它指定滑动令牌有效以证明身份验证的时间。该timedelta值会在令牌生成期间添加到当前UTC时间,以获得令牌的默认“ exp”声明值。有关更多信息,请参见下面的“滑动令牌”部分。
    63. SLIDING_TOKEN_REFRESH_LIFETIME
    64. 一个datetime.timedelta对象,指定要刷新的滑动令牌有效的时间。该timedelta值会在令牌生成期间添加到当前UTC时间,以获得令牌的默认“ exp”声明值。有关更多信息,请参见下面的“滑动令牌”部分。
    65. SLIDING_TOKEN_REFRESH_EXP_CLAIM
    66. 用于存储滑动令牌的刷新周期的到期时间的声明名称。有关更多信息,请参见下面的“滑动令牌”部分。