【问题标题】:Getting django rest framework jwt authentication to work [django rest, angular 5]让 django rest 框架 jwt 身份验证工作 [django rest,angular 5]
【发布时间】:2018-10-17 20:07:24
【问题描述】:

所以我已经安装了 djanogo rest 框架 JWT 并设置了设置和身份验证类。根据本指南。我将省略设置,因为它们是正确的,这不是问题所在。也是为了不要发布太多代码

https://jpadilla.github.io/django-rest-framework-jwt/

然后我从前端调用我服务器上的授权视图

 let token = "hardcoded token just to get the service working"; 
    if(token != null){
      this.authservice.authorizetoken(token)
        .subscribe(
          (req: any)=>{
            console.log(req);
          }
        );

// grab the permissions a user has and who they are by token
    authorizetoken(token){
      return this.http.get(userauthorization, {
        headers: new HttpHeaders().set('Authorization', 'JWT' + token )
      });
    }

然后在我的 django 中是查看代码:

class UserAuthorization(APIView):
    authentication_classes = (JSONWebTokenAuthentication,)
    def get(self, request, *args, **kwargs):
        print(request.user)
        return Response({})

但我不断收到匿名用户返回。它不应该是一个用户对象,因为我在标题中传递了一个令牌吗?

我不知道我做错了什么。

【问题讨论】:

  • 你的 drf jwt 配置如何?或者您可以在“BaseJSONWebTokenAuthentication”类中的“authenticate”函数上进行调试。这是一个drf jwt的类,这个句柄是否返回一个用户,所以你可以找到究竟是什么错误。

标签: django authentication django-rest-framework http-headers django-rest-framework-jwt


【解决方案1】:

根据文档,标题应采用Authorization: JWT <your_token> 格式。当您在 authorizetoken 函数内的标头中设置令牌时,您在 'JWT'+ token 之间缺少一个空格。这可能是未对用户进行身份验证的问题。您是否尝试过使用 Postman 的端点?

【讨论】:

  • 昨晚我正在阅读文档并认为这可能是问题所在。我刚拿到我的电脑,准备测试一下。谢谢
猜你喜欢
  • 2019-03-01
  • 2021-12-21
  • 2019-07-11
  • 2013-06-29
  • 2017-09-26
  • 2017-11-02
  • 2019-05-02
  • 2019-01-01
  • 1970-01-01
相关资源
最近更新 更多