Django rest_framework_simplejwt 令牌过期太快

Django rest_framework_simplejwt token expiring too fast

对于 Django,我使用 rest_framework_simplejwt 应用程序设置了 JWT 身份验证。

我相信访问令牌的默认超时为 1 天,即使在 settings.py 中将其明确配置为 1 天后,令牌在约 10 分钟后不再工作,并且服务器 returns 401 响应。

settings.py:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
}

SIMPLE_JWT = {
    'TOKEN_LIFETIME': timedelta(days=1),
    'TOKEN_REFRESH_LIFETIME': timedelta(days=7),
}

我在想 Django 中的时间设置可能有问题,所以在 settings.py 中我打印了 datetime.datetime.now(),在 startapp 期间奇怪地被调用了两次,带有2小时时差。尽管如此,如果令牌寿命应该是 1 天,它应该是有效的,所以我不确定是什么问题。

对可能出现的问题有什么想法吗?非常感谢您。

您确定提供的密钥名称正确吗settings.py

根据 django-rest-framework-simplejwt 的 repository,您需要使用 ACCESS_TOKEN_LIFETIME 而不是 TOKEN_LIFETIMEREFRESH_TOKEN_LIFETIME 而不是 TOKEN_REFRESH_LIFETIME