项目框架:
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校验失败