项目框架:
django rest framework
本地调试的时候,报"Authentication credentials were not provided."这个错误,查了一下说是settings.py里要配置:
'DEFAULT_AUTHENTICATION_CLASSES': [
'cvat.apps.authentication.auth.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
],
配置之后,还是报这个错误。然后就开始查找原因。本地调试的时候用的是session认证,所以看了一下SessionAuthentication的代码,打印了一下user, 发现user是AnonymousUser,user.is_active是False,说明用户认证失败,然后又看了一下SessionMiddleware的代码,打印了一下session_key,发现是有值的,也就是说request的header里的cookie里是有值的,那就可能是session_key在校验的时候失败了。认证看了一下Terminal的输出信息,发现 WARNING django.security.SuspiciousSession: Session data corrupted有这样一条信息,查了一下大概意思是session data被损坏了,看了一下逻辑,发现是SECRET_KEY的问题,本地调试的时候连的是测试环境的数据库,但是SECRET_KEY确没有改成测试环境的,所以session校验失败
本文讲述了作者在使用Django Rest Framework进行本地调试时遇到的'Authenticationcredentialswerenotprovided.'错误,通过分析发现是SECRET_KEY未设置为测试环境导致的session校验失败。博主详细解释了问题排查过程,包括设置默认认证类、检查用户状态和SessionMiddleware,最终确定为SECRET_KEY调整的重要性。
5898

被折叠的 条评论
为什么被折叠?



