簡體   English   中英

在node.js上使用bcrypt登錄問題

[英]Login Issues using bcrypt on node.js

伙計們,在使用node.js上的bcrypt檢索uname pwd登錄時遇到問題...我是菜鳥,你知道,對不起,如果這個問題不聰明......代碼如下......我沒有收到任何錯誤,無論是輸入錯誤的密碼還是正確的密碼,代碼都會返回“res.status(200).send”(成功輸入“+ username”....

app.post("/users/signin", function(req, res){
var {username, password} = req.body; //deconstructing again!!! 
    User.findOne({username: username}, "username password", function(err, userBody){
        if (!err){
            var pwdcheck = bcrypt.compare(userBody.password, password); //decrypt password
            console.log("password check: inserted pwd is " + userBody.password + " retreived is " + password);
            if (pwdcheck) {
                console.log("pwdcheck returns " + pwdcheck);
                req.session.user = {
                   username: userBody.username,
                   password: userBody.password
                };
                req.session.user.expires = new Date( //giving a session duration for the user
                    Date.now() + 24 * 3600 * 60 * 1000
               );
               res.status(200).send(" successfully logeed in " +username );        
           } else {
           res.status(401).send(" invalid credentials 1 " +username );
           }
    } else {
        res.status(401).send(" invalid credentials 2 " +username );
        }
});

});

看起來像bcrypt.compare是一個異步函數。 分配變量時,不是指定函數的返回值,而是指定函數本身。 由於函數不為null ,因此用於測試返回值的if語句將始終求值為true 請嘗試使用bcrypt.compareSync

此外,您可能會反轉明文和散列密碼。 來自請求的明文密碼應該是第一個參數,來自存儲的用戶記錄的散列密碼應該是第二個: bcrypt.compareSync(plaintext, hash)

https://www.npmjs.com/package/bcrypt

暫無
暫無

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

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