使用Djoser JWT刷新接口时报错decode()收到意外参数'verify'如何解决
报错根因
该错误由PyJWT版本与当前Djoser版本不兼容触发:PyJWT v2.0及以上版本移除了jwt.decode()方法的verify参数,替换为拆分后的专项验证配置项;而部分低版本Djoser默认适配PyJWT v1.x的API规范,调用解码方法时传入了已废弃的verify参数,就会抛出该参数不匹配异常。
解决方案
- 方案一:降级PyJWT到适配版本
直接执行安装命令降级到PyJWT 1.x的稳定兼容版:pip install PyJWT==1.7.1
安装完成后重启Django服务即可生效。 - 方案二:升级Djoser到适配PyJWT 2.x的版本
若你需要使用PyJWT 2.x的新特性,可将Djoser升级到v2.1.0及以上版本,该版本及之后的Djoser已完成对PyJWT 2.x API的适配:pip install djoser --upgrade
升级后核对你项目中的Djoser配置项是否符合新版本规范即可。
额外排查点
如果执行上述操作后仍报错,检查你项目中是否有自定义JWT解码逻辑,若存在手动调用jwt.decode()的代码,需对应调整参数写法:
PyJWT 2.x中关闭签名验证的写法为
jwt.decode(..., options={"verify_signature": False}),不再支持直接传verify=False参数。
内容的提问来源于stack exchange,提问作者Ssali Jonathan
相关产品推荐
相关产品推荐

