簡體   English   中英

我可以在密碼哈希函數中創建用戶對象嗎?

[英]Can I create a user object inside password hash function?

我正在關注后端 REST Api 教程,在視頻中,這就是他所做的,創建一個用戶對象,然后將 newUser.password 更改為生成的哈希值。

// Data is valid, register user
let newUser = new User({
    name,
    username,
    password,
    email,
});
// Hash password 
bcrypt.genSalt(10, (err, salt) => {
    bcrypt.hash(newUser.password, salt, (err, hash) => {
        if (err) throw err;
        newUser.password = hash;
        newUser.save().then(user => {
            return res.status(201).json({
                success: true,
                msg: "User is now registered"
            })
        })
    })
})

為什么不一次性完成所有操作?

// Why not do it in one go instaed of creating and then changing User?
bcrypt.genSalt(10, (err, salt) => {
    bcrypt.hash(password, salt, (err, hash) => {
        if (err) throw err;
        let newUser = new User({
            name,
            username,
            hash,
            email,
        });
        newUser.save().then(user => {
            return res.status(201).json({
                success: true,
                msg: "User is now registered"
            })
        })
    })
})

一起做有什么問題嗎?

由於 bcrypt 采用回調函數,因此您的哈希值只能在回調函數的括號之間使用,這就是您在這些括號之間進行賦值的原因。 由於您在這些括號之間聲明了 newuser,因此 newuser 在更大的范圍內不可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM