2012-05-28 26 views
8

我使用nodejs bcrypt库来获得更好的密码保护。Nodejs bcrypt库

我不知道我确切地理解如何使用它,但我得到这个至今:

//A module containing this login function: 

login: function(credentials,req,res) { 

    //"credentials" is containing email and password from login form 

    var query = 'SELECT password, email FROM users WHERE email = ? LIMIT 1'; 

    client.query(query,[credentials.email], function(err, results) { 

     if (results[0]) { 

      //Compare passwords 
     if (bcrypt.compareSync(credentials.password, results[0].password)) { 

       //Set session data and redirect to restricted area 

      } 
     } 
    }); 
} 

我删除了所有的错误处理的例子,使其更容易阅读的代码。

1.此工程,我可以登录和设置会话。但是,这一切都有它吗?我错过了什么吗?

2.生成哈希时,像salt这样的前缀被添加到密码中。我不得不将盐保存在db中?

任何帮助表示赞赏

回答

6

是的,这就是它的全部!最初加密密码时生成的盐用于防止彩虹表攻击;你不需要坚持它。

+0

太好了。真的很不错的图书馆。并易于使用 – georgesamper

+0

很好的答案。这篇文章也帮助我理解了为什么你不需要坚持盐。 http://stackoverflow.com/questions/277044/do-i-need-to-store-the-salt-with-bcrypt – emilebaizel

+1

请注意:正如@emilebaizel所指出的问题的接受答案所指出的那样,盐是储存的作为结果散列的一部分。所使用的回合数也是散列的一部分,导致一个散列具有“检查器”代码所需的所有信息。 – Darkhogg