Django其余的HTTP基本authentication框架

如果我的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