Django Rest 框架:HTTP 401 未经授权错误

问题描述 投票:0回答:2

我是djangorest框架jwt令牌包。由于某种原因,它没有收到令牌凭据。我确信我正在使用正确格式的 axios 来存储令牌。我不确定错误是前端还是后端。我在后端使用 pythonanywhere 。

设置.py

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

前端

handleFormSubmit(e) {
    e.preventDefault();

    if (this.getValidationState() == 'error') {
      this.setState({invalidFormSubmit: true})
      return;
    }

    axios.defaults.headers.common['Authorization'] = 'Token ' + this.props.auth.getToken();
    console.log(this.props.auth.getToken());

    var capsule = new MyForm();
    capsule.append("user", this.state.userUrl);
    capsule.append("dateToPost", this.state.dateToPost.format());
    capsule.append("image", this.state.image);
    capsule.append("caption", this.state.caption);
    capsule.append("dateToDelete", this.state.dateToPost.add(1, "d").format());

    axios.post(this.props.auth.domain + "/snapcapsule/", capsule)
    .then(() => {
       this.setState({redirect: true})
    }).catch(err =>{
        alert(err);
    })
  }

错误

{"detail":"未提供身份验证凭据。"}

javascript python django http axios
2个回答
10
投票

settings.py 中的令牌身份验证

JWT_AUTH = {
    # Authorization:Token xxx
    'JWT_AUTH_HEADER_PREFIX': 'Token',
}

默认

JWT_AUTH_HEADER_PREFIX
是JWT。

JWT_AUTH_HEADER_PREFIX 您可以修改需要与令牌一起发送的 Authorization 标头值前缀。默认值为 JWT。 PR #4 中引入了此决定,以允许在 DRF 中使用此包和 OAuth2。

用于令牌和授权标头的另一个常见值是 Bearer。

默认为 JWT。

文档在这里


0
投票

我正在接收令牌并成功将它们添加到请求标头中,但由于某些原因它显示 401 unauth 在此输入图片描述

在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.