我是django rest框架jwt令牌包。由于某种原因,它没有收到令牌凭证。我确定我使用正确格式的axios来存储令牌。我不确定错误是前端还是后端。我在后端使用pythonanywhere。
Settings.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);
})
}
错误
{“详细信息”:“未提供身份验证凭据。”}
答案 0 :(得分:4)
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。
Doc是here。