node.js - bcrypt 与 nodejs 比较
问题描述
所以我收到这个错误
Error: Illegal arguments: string, undefined
,这是代码
router.post('/loguser', async (req, res) => {
const compareHashed = await bcrypt.compare(req.body.password)
const user = await User.findOne({
username: req.body.username,
password: compareHashed
})
if (user) {
console.log('user is found')
}
if (!user) {
console.log('user is not found')
}
})
有谁知道如何解决这个问题,我知道这是 bcrypt 的问题
解决方案
嗨,兄弟,首先我们对密码进行哈希处理并存储在数据库中
从 db 中检索该散列密码并将其与实际密码进行比较
例如:如果我们尝试使用电子邮件和密码登录
User.find({email:req.body.email}).exec().then(result=>{
if(result.length < 1){
console.log('email not found')
}else{
bcrypt.compare(req.body.password,result[0].password,(err,result)=>{
if(err){
console.log('password not match')
}
if(result){
console.log('password match')
}
})
}
})
推荐阅读
- java - 在构造函数中引用类实例如何工作?
- python - Django IntegerField 在使用 MySQL 时检索 0 作为 None 值
- python-2.7 - 如何从python中的文件名中获取完整的文件路径?
- java - 选择第一个可用的服务块
- wordpress - 使用 wp_insert_post() 的自定义分类问题
- java - 如何编写具有多个源的 JGiven 参数化场景(JUnit5)?
- php - 无法从 woocommerce 产品循环挂钩/操作中删除 sale_flash 徽章
- hybris - 是否可以在不重新启动服务器的情况下定义新类型并将其加载到 Hybris 类型系统中?
- sql - 在 R 中执行 SQL 存储过程
- html - 为什么 text-justify:distribute 在 Chrome 中不工作?