如果我的web服务(由Django Rest Framework,v2.3.8支持)位于受Nginx的HTTP基本authentication保护的位置内,如下所示:
location / { auth_basic "Restricted access"; auth_basic_user_file /path/to/htpasswd; uwsgi_pass django; include /etc/uwsgi/config/uwsgi_params; }
然后,当用户进行身份validation并尝试访问API时,将为所有视图获得以下响应:
{"detail": "Invalid username/password"}
即使视图不需要validation,Django Rest Framework是否会selectHTTP授权标头(用于Nginx)? 如果是的话,我该怎么办呢?
任何帮助将不胜感激。
默认情况下,Django Rest Framework有两个认证类,请看这里 。
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication' )}
如果不需要,可以禁用其余的框架认证。
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': () }
或者您可以只删除BasicAuthentication
因为它会在你的情况下工作。
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication' )}
正如另一篇文章所述,您必须在身份验证类旁边添加一个逗号,否则可能会抛出一个TypeError。
'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', #comma added here )
资料来源: https : //stackoverflow.com/a/22697034/5687330