如何使用 jwt 在 typescript 中实现更改密码 API?

Posted

技术标签:

【中文标题】如何使用 jwt 在 typescript 中实现更改密码 API?【英文标题】:How to implement the change password API in typescript with jwt? 【发布时间】:2021-09-02 02:19:20 【问题描述】:

我创建了登录 api 并在其中实现了 jwt。现在我正在尝试使用带有 cookie 或本地存储的 jwt 身份验证来实现 change_password。我试过但无法做到这一点。任何人都可以帮助我更改密码 api,并且我还附上了我的登录 API。

 export let login=async(req:Request,resp:Response)=>

 var email , password = req.body;
 try

    const user=await User.findOne(email).lean();

    if(!user)
        return resp.json(message:"user not found")
    

    if(await bcryptjs.compare(password,user.password))
        const token=jwt.sign(
            
                id:user._id,
                username:user.email
            ,config.token.secret)
        
        return resp.json(status:'ok',data:token)
    

    return resp.json(status:'error',data:'comming soon')
       
 catch(error)
     console.log(error);
 

【问题讨论】:

【参考方案1】:

您可以为更改密码创建不同的路径,并且可以有多种方法来执行此操作。让我们保持简单。

您可以询问用户用户名和现有密码以及新密码。检查现有密码是否与数据库中的密码匹配,并对新密码进行哈希处理并保存。

app.post('/passwordChange', (req, res) => 
     const username, password, newPassword = req.body;
     const user = User.findOne(username);
     //check the password matches and then update the User with new password

     const matched = await bcryptjs.compare(password,user.password);
    
     if (matched) 
         User.updateOne() // go your things
     
     else 
        // do tell your to update correct password 
     
     
)

可以有多种简单和复杂的方法来实现它。以上代码为伪代码,修改后在代码中使用即可。

【讨论】:

以上是关于如何使用 jwt 在 typescript 中实现更改密码 API?的主要内容,如果未能解决你的问题,请参考以下文章

您如何(如果可能)使用以下代码在网站中实现 Bcrypt 和 JWT?

如何在基于 JWT 的单点登录身份验证架构中实现注销?

如何在 TypeScript 中实现睡眠功能?

如何在 Spring Security 中实现基于 JWT 的身份验证和授权

如何在 Spring Boot 中实现 oAuth2 和 JWT 身份验证? [关闭]

在 Typescript 中实现接口时如何定义私有属性?