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

如何在axios的rest-auth中使用令牌发布? POST http:// localhost:8000 / rest-auth / password / change / 401未经授权

如何解决如何在axios的rest-auth中使用令牌发布? POST http:// localhost:8000 / rest-auth / password / change / 401未经授权

这是我在vue中的代码

resetPOST(){
    var formData = new FormData();
    formData.append('old_password',this.oldPassword);
    formData.append('new_password1',this.password1);
    formData.append('new_password2',this.password2);
    axios.post('http://localhost:8000/rest-auth/password/change/',{headers: { 'Authorization' :  this.token },data: {
        old_password: this.oldPassword,new_password1: this.password1,new_password2: this.password2
      }
    })
},

其中变量“ token”具有这样的值:bbf957d27925a860f8c678546cf0425dbf7ddf98

我不明白为什么会出现此错误,如果我尝试在后面部分输入旧密码和两个新密码,那么它会起作用。由于某种原因,我没有采用token参数。

预先感谢

解决方法

您缺少Bearer。默认情况下,大多数框架都要求您以以下格式发送授权:Bearer <token>

如果将Bearer单词更改为另一个单词,则应使用该单词,但如果在django-rest-auth中将其保留为默认值,则必须使用以下单词:

axios.post('http://localhost:8000/rest-auth/password/change/',{headers: { 'Authorization' :  `Bearer ${this.token}` },data: {
        old_password: this.oldPassword,new_password1: this.password1,new_password2: this.password2
      }
    })
,

我遇到了类似的问题。我意识到我正在为登录到应用程序的用户使用相同的 axios 实例,这意味着使用身份验证令牌。当然,如果您要重置密码,则您没有身份验证(因此没有令牌)。使用不同的 axios 实例来重置密码,如下所示:

const instance = axios.create({
    baseURL: Store.state.endpoints.baseUrl,headers: {
        'Content-Type': 'application/json'
    },// xhrFields: {
    //   withCredentials: true
    // },xsrfCookieName:"csrftoken",xsrfHeaderName:'X-CSRFToken'
    })
    return instance;
}

请注意,没有身份验证令牌和凭据被注释掉(也可能设置为 false)。这对我有用。

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