登录后如何修改密码?

时间:2020-01-08 11:55:33

标签: strapi

我使用以下代码更改了密码,但收到“请求失败,状态代码为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);
     });
   }

预先感谢

2 个答案:

答案 0 :(得分:3)

您将必须使用PUT /users/:id路由(来自用户API)

如果要让用户使用此路由,则必须创建一个isOwner策略并将其应用于该路由。 要只让当前用户输入自己的密码,而不是所有用户的密码。

这里有一些文档:

答案 1 :(得分:0)

另一种替代方法是使用密码重置控制器。该场景是通过POSThttp://localhost:1337/password的密码对象,控制器将验证当前的password,然后使用给定的newPassword更新密码,并返回一个新的{{1} }。

我们将按如下方式发布密码对象:

jwt token

步骤是:

  1. 创建密码重置路线{ "identifier": "yohanes", "password": "123456789", "newPassword": "123456", "confirmPassword": "123456" }
/api/password/config/routes.json
  1. { "routes": [ { "method": "POST", "path": "/password", "handler": "password.index" } ] } 创建密码重置控制器
/api/password/controllers/password.js

注意:不要忘记在module.exports = { index: async ctx => { return 'Hello World!'; } } 启用password index

  1. 将邮递员指向Roles -> Permission -> Application。响应将显示文本http://localhost:1337/password

  2. 更新密码控制器:

Hello World!
  1. 发布密码对象后,控制器将更新用户密码并返回新创建的jwt令牌。

可以找到完整的代码here。在Strapi v.3.3.2上测试

相关问题