nginx的问题。如何使用jwt(Django)对API进行身份验证调用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的问题。如何使用jwt(Django)对API进行身份验证调用?相关的知识,希望对你有一定的参考价值。

我在nginx和django-rest-framework方面遇到了一些问题。我已经试图弄清楚如何在大约24小时内向API发出经过身份验证的请求。我真的很累,希望有人可以帮助我。

我有以下nginx conf:

location / {

     if ($request_method = OPTIONS ) {
        add_header 'Access-Control-Allow-Origin' "*;
        add_header 'Access-Control-Allow-Methods' "GET, PUT, POST, PATCH, DELETE, OPTIONS";
        add_header 'Access-Control-Allow-Headers' "Authorization, 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
        add_header 'Access-Control-Allow-Credentials' "true";
     }

       uwsgi_pass  django;
       include     /path/to/your/mysite/uwsgi_params;, 
}

以下是客户端的代码:

    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;
    xhr.open('POST', 'http://api/v0/api-token-auth/', true);

    xhr.setRequestHeader('Authorization', 'JWT ' + getCookie("token"))

    xhr.send(JSON.stringify(json)); 

我总是得到401 Unauthorized。我不知道还需要做些什么才能解决这个问题。

答案

问题是django为了安全原因阻止某些标头允许或阻止请求使用CORS https://github.com/OttoYiu/django-cors-headers

以上是关于nginx的问题。如何使用jwt(Django)对API进行身份验证调用?的主要内容,如果未能解决你的问题,请参考以下文章

DRF:如何将 django-rest-framework-jwt 集成到 Djoser

每次使用 django-graphql-jwt 生成新令牌时,如何撤销 JWT?

JWT 身份验证:使用 UI 令牌对 Graphene/Django (GraphQL) 查询进行身份验证?

当他从所有浏览器(Django-rest-auth,JWT)更改密码时如何注销用户?

我们如何知道用户是不是仍然在使用 VUE/Django/JWT?

如何使用 Simple JWT(django rest)将 JWT 令牌列入黑名单?