我使用以下代码更改了密码,但收到“请求失败,状态代码为400”。有人可以告诉我问题出在哪里吗?
axios.post ('http: // localhost: 1337 / auth / reset-password', {
code: '',
password: '1234567',
passwordConfirmation: '1234567',
}
, {
headers: {
Authorization: `Bearer $ {this.currentUser.jwt}`
}
}
) .then (response => {
// Handle success.
console.log ('Your user \' s password has been changed. ');
})
.catch (error => {
// Handle error.
console.log ('An error occurred:', error);
});
}
预先感谢
答案 0 :(得分:3)
您将必须使用PUT /users/:id
路由(来自用户API)
如果要让用户使用此路由,则必须创建一个isOwner策略并将其应用于该路由。 要只让当前用户输入自己的密码,而不是所有用户的密码。
这里有一些文档:
答案 1 :(得分:0)
另一种替代方法是使用密码重置控制器。该场景是通过POST
到http://localhost:1337/password
的密码对象,控制器将验证当前的password
,然后使用给定的newPassword
更新密码,并返回一个新的{{1} }。
我们将按如下方式发布密码对象:
jwt token
步骤是:
{
"identifier": "yohanes",
"password": "123456789",
"newPassword": "123456",
"confirmPassword": "123456"
}
:/api/password/config/routes.json
{
"routes": [
{
"method": "POST",
"path": "/password",
"handler": "password.index"
}
]
}
创建密码重置控制器/api/password/controllers/password.js
注意:不要忘记在module.exports = {
index: async ctx => {
return 'Hello World!';
}
}
启用password index
。
将邮递员指向Roles -> Permission -> Application
。响应将显示文本http://localhost:1337/password
。
更新密码控制器:
Hello World!
可以找到完整的代码here。在Strapi v.3.3.2上测试