Django REST集成Simple JWT刷新接口未返回refresh token问题
问题根因
你使用了已废弃的配置前缀,Simple JWT 3.0及以上版本已经将配置项的根键从JWT_AUTH改为SIMPLE_JWT,你写在JWT_AUTH下的所有参数都不会被框架加载,ROTATE_REFRESH_TOKENS默认值为False,因此刷新接口仅返回access token。
修复方案
修改settings.py中的配置键名即可:
# 把原来的JWT_AUTH改为SIMPLE_JWT SIMPLE_JWT = { 'ACCESS_TOKEN_LIFETIME': datetime.timedelta(minutes=15), 'REFRESH_TOKEN_LIFETIME': datetime.timedelta(days=10), 'ROTATE_REFRESH_TOKENS': True, }
可选优化(按需开启)
如果需要开启「刷新令牌后旧refresh token自动拉黑」的能力,需要额外操作:
- 安装带黑名单功能的依赖包:
pip install djangorestframework-simplejwt[crypto] - 在INSTALLED_APPS中添加
rest_framework_simplejwt.token_blacklist - 执行数据库迁移生成黑名单表:
python manage.py migrate - 配置中追加
'BLACKLIST_AFTER_ROTATION': True即可生效
内容的提问来源于stack exchange,提问作者user655941
相关产品推荐
相关产品推荐

