Bcrypt 和 PassportJs 用户注册

Posted

技术标签:

【中文标题】Bcrypt 和 PassportJs 用户注册【英文标题】:Bcrypt And PassportJs User Registration 【发布时间】:2020-09-11 00:23:43 【问题描述】:

我不确定我是否是我们,ng bcrypt 是否正确。

这是我尝试编写的代码。

app.post('/kayıt/', function(req, res)
bcrypt.genSalt(10, function(err, salt) 
    bcrypt.hash(password, salt, function(err, hash) 
        let user = new User(
        isim:req.body.isim,
        email:req.email.isim,
        password:req.body:password,
);
user.save(function(err)
if(err)
  console.log(err);
else
res.redirect('/');
);

你认为有什么错误吗?或者正确使用 bcrypt 和用户注册过程。(注意:在我的程序中,我卡在了另一个关于 express-validator 的代码块中,所以我尝试编写代码但我不确定它是否正确)

那么你能告诉我这些代码,如果错了我应该改变什么,如果不是,还有什么可以替代写这个注册部分?

【问题讨论】:

【参考方案1】:

有多种方法可以使用bcrypt.jshash 密码。就像你可以使用Promiseasyncsync。您使用的是async,它在单独的函数调用中生成salthash。您的代码中的一个错误应该是 password:req.body.password,您需要在 body 之后使用 dot(.) 而不是 colon(:)

除了您的代码之外,哈希密码的方法之一是

 router.post('/kayıt', async (req, res) => 
     //hashed password 
    const salt = await bcrypt.genSalt(10);
    const hashedPassword = await bcrypt.hash(req.body.password, salt);

    const user = new User(
       isim: req.body.isim,
       email: req.body.email,
       password: hashedPassword
    );
    user.save(function(err) 
             if (err) 
                console.log(err);
              else 
                res.redirect('/');
               
             );
         );

你可以看看here。

【讨论】:

请问如果我实现自己的代码,它会工作吗? 那么我的代码和你的代码有什么区别? 您的代码是async,它在单独的函数调用上生成盐和散列。我用过Async/await 请你看看这里***.com/questions/61922186/…请 好的,问题解决了,非常感谢先生。

以上是关于Bcrypt 和 PassportJs 用户注册的主要内容,如果未能解决你的问题,请参考以下文章

用 bcrypt (PHP) 比较两个哈希值

检查用户名是不是被使用 - PassportJS

使用passportjs构建2个登录系统(用户和管理员)

PassportJS - GET 请求中的登录凭据?

使用 PassportJS 和 Connect for NodeJS 来验证 Facebook 用户

使用 bcrypt 输入密码 - 忘记密码的电子邮件