微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HTTP基本身份验证背后的Django Rest框架

如果我的webservice(由Django Rest Framework,v2.3.8提供支持)位于受Nginx的HTTP基本身份验证保护的位置内,如下所示:

location / {
            auth_basic           "Restricted access";
            auth_basic_user_file /path/to/htpasswd;

            uwsgi_pass django;
            include /etc/uwsgi/config/uwsgi_params;
    }

然后,当用户进行身份验证并尝试访问API时,将获得所有视图的以下响应:

{"detail": "Invalid username/password"}

即使视图不需要身份验证,Django Rest Framework是否会获取HTTP Authorization标头(适用于Nginx)?如果是这样,我该怎么办呢?

任何帮助将不胜感激.

解决方法:

认情况下,Django Rest Framework有两个身份验证类,请参阅here.

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'
)}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐