Strapi 登录后如何更改密码?
我使用了下面的代码来更改密码,但是我得到了“请求失败,状态代码为400”。有人能告诉我问题出在哪里吗Strapi 登录后如何更改密码?,strapi,Strapi,我使用了下面的代码来更改密码,但是我得到了“请求失败,状态代码为400”。有人能告诉我问题出在哪里吗 axios.post ('http: // localhost: 1337 / auth / reset-password', { code: '', password: '1234567', passwordConfirmation: '1234567', } , { headers: { Aut
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);
});
}
提前感谢您必须使用
PUT/users/:id
路由(从用户API)
如果希望用户使用此路由,则必须创建一个ISOOwner策略并将其应用于此路由。
只允许当前用户使用自己的密码,而不是所有用户的密码
以下是一些文档:
PUT/users/:id
路由(从用户API)
如果希望用户使用此路由,则必须创建一个ISOOwner策略并将其应用于此路由。
只允许当前用户使用自己的密码,而不是所有用户的密码
以下是一些文档:
POST
将密码对象发送到http://localhost:1337/password
,控制器将验证当前的密码
,然后使用给定的新密码
更新密码,并返回新的jwt令牌
我们将发布一个密码对象,如下所示:
{
“标识符”:“yohanes”,
“密码”:“123456789”,
“新密码”:“123456”,
“确认密码”:“123456”
}
这些步骤是:
/api/password/config/routes.json
:{
“路线”:[
{
“方法”:“发布”,
“路径”:“/密码”,
“处理程序”:“密码.索引”
}
]
}
/api/password/controllers/password.js创建密码重置控制器
module.exports={
索引:异步ctx=>{
返回“你好,世界!”;
}
}
注意:不要忘记在角色->权限->应用程序
中启用密码索引
http://localhost:1337/password
。响应将显示文本Hello World代码>
module.exports={
索引:异步ctx=>{
//发布参数
//const params=JSON.parse(ctx.request.body);//如果使用Postman发布原始对象
const params=ctx.request.body;
//标识符是必需的。
如果(!参数标识符){
返回ctx.badRequest(
无效的
格式错误({
id:'Auth.form.error.email.provide',
信息:“请提供您的用户名或电子邮件。”,
})
);
}
//其他参数验证
.
.
.
//基于标识符获取用户
const user=wait strapi.query('user','users permissions').findOne({username:params.identifier});
//根据用户查询结果密码验证给定密码
const validPassword=wait strapi.plugins['users-permissions'].services.user.validatePassword(params.password,user.password);
如果(!validPassword){
返回ctx.badRequest(
无效的
格式错误({
id:'Auth.form.error.invalid',
消息:“标识符或密码无效。”,
})
);
}否则{
//生成新的哈希密码
const password=wait strapi.plugins['users-permissions'].services.user.hashPassword({password:params.newPassword});
//更新用户密码
等待斯特拉皮
.query('用户','用户权限')
.update({id:user.id},{resetPasswordToken:null,password});
//返回新的jwt令牌
发送({
jwt:strapi.plugins['users-permissions'].services.jwt.issue({id:user.id}),
user:sanitizeEntity(user.toJSON?user.toJSON():user,{model:strapi.query('user','users permissions').model}),
});
}
}
}
完整的代码可以找到。在Strapi v.3.3.2上测试另一种替代方法是使用密码重置控制器。该场景是通过
POST
将密码对象发送到http://localhost:1337/password
,控制器将验证当前的密码
,然后使用给定的新密码
更新密码,并返回新的jwt令牌
我们将发布一个密码对象,如下所示:
{
“标识符”:“yohanes”,
“密码”:“123456789”,
“新密码”:“123456”,
“确认密码”:“123456”
}
这些步骤是:
/api/password/config/routes.json
:{
“路线”:[
{
“方法”:“发布”,
“路径”:“/密码”,
“处理程序”:“密码.索引”
}
]
}
/api/password/controllers/password.js创建密码重置控制器
module.exports={
索引:异步ctx=>{
返回“你好,世界!”;
}
}
注意:不要忘记在角色->权限->应用程序
中启用密码索引
http://localhost:1337/password
。响应将显示文本Hello World代码>
module.exports={
索引:异步ctx=>{
//发布参数
//const params=JSON.parse(ctx.request.body);//如果使用Postman发布原始对象
const params=ctx.request.body;
//标识符是必需的。
如果(!参数标识符){
返回ctx.badRequest(
无效的
格式错误({
id:'Auth.form.error.email.provide',