1
新手的問題回覆:和的NodeJS cryto密碼如何使用Node.js有問題
var crypto = require('crypto');
var User = {
user1: { name: 'bob', salt: 'randomSalt', password: sha1('mypass', this.salt) }
};
function sha1(pass, salt) {
return crypto.createHmac('sha1', salt).update(pass).digest('hex');
}
爲什麼我 console.log(User.user1.password == sha1('mypass', 'randomSalt') //false
?
你的診斷是正確的,但我覺得你的解釋是有點過。你期望這個''指的是'用戶',但它從來沒有;指向'sha1'的參數中的'this.salt'並不重要,因爲'this.salt'在被傳遞到'sha1'之前被評估。對於'this'來引用'User',你必須調用附加到'User'對象的函數。這是一個很好的教程:http://howtonode.org/what-is-this – 2011-03-17 16:20:07
請注意,沒有辦法在對象上定義屬性,然後在同一對象定義的其他地方引用該屬性。因此,將'password:'位移動到第二行:'User.password = sha1('mypass',User.salt);' – 2011-03-17 16:23:21