找到一种使用 passport-local-mongoose 更新用户护照的方法

Posted

技术标签:

【中文标题】找到一种使用 passport-local-mongoose 更新用户护照的方法【英文标题】:Find a way to update the user passport with passport-local-mongoose 【发布时间】:2016-01-30 02:58:38 【问题描述】:

我正在使用 nodejspassport-local-mongoose 创建一个应用程序, 问题是我找不到更新用户密码的方法,因为护照使用 Salt 和 Hash,有一些方法或方法可以通过 PUT 方法更新密码吗?

【问题讨论】:

【参考方案1】:

假设您已将 passport-local-mongoose 插件添加到您的用户架构中,您应该可以调用 setPassword(password, cb) 在您的用户架构上。

yourSchemaName.findById(id, function(err, user) 
    user.setPassword(req.body.password, function(err) 
        if (err) //handle error
        user.save(function(err) 
            if (err) //handle error
            else //handle success
        );
    );
);

【讨论】:

【参考方案2】:

如果要更改密码,可以使用 changePassword 命令。 这是一个例子

router.post('/changepassword', function(req, res) 
// Search for user in database
User.findOne( _id: 'your id here' ,(err, user) => 
  // Check if error connecting
  if (err) 
    res.json( success: false, message: err ); // Return error
   else 
    // Check if user was found in database
    if (!user) 
      res.json( success: false, message: 'User not found' ); // Return error, user was not found in db
     else 
      user.changePassword(req.body.oldpassword, req.body.newpassword, function(err) 
         if(err) 
                  if(err.name === 'IncorrectPasswordError')
                       res.json( success: false, message: 'Incorrect password' ); // Return error
                  else 
                      res.json( success: false, message: 'Something went wrong!! Please try again after sometimes.' );
                  
         else 
          res.json( success: true, message: 'Your password has been changed successfully' );
         
       )
    
  
);
);

如果您想在不使用旧密码的情况下更改密码,您可以使用 setPassword 方法。这是一个例子

 user.setPassword(req.body.password, function(err,user)
if (err) 
    res.json(success: false, message: 'Password could not be saved. Please try again!')
 else  
  res.json(success: true, message: 'Your new password has been saved successfully')
          
         );

【讨论】:

以上是关于找到一种使用 passport-local-mongoose 更新用户护照的方法的主要内容,如果未能解决你的问题,请参考以下文章

使用Twisted python,有一种机制可以找到类似于socket.open的空闲端口。

找到一种使用 passport-local-mongoose 更新用户护照的方法

我尝试使用开始按钮启动while循环并使用停止按钮停止但我无法找到一种有效的方法

有没有一种方法可以使用 Detox E2E 测试在 FlatList 中找到一个元素

我想找到一种使用 Firebase 作为 Android、IOS 和 Web 应用程序后端的最佳方法 [关闭]

找到一种方法将匹配的键和值从映射推回向量