安全登录sails.js bcrypt

时间:2017-11-30 19:27:38

标签: javascript node.js sails.js bcrypt

我正在设置sails.js项目,我有点担心我的登录方法及其安全性。

我从研究和我自己的代码一起攻击它,所以想确保它是安全的。

基本上,我将通过Bcrypt哈希发送的密码进行比较,如果它们不匹配我们会显示错误,如果他们这样做,我们会通过为用户设置会话ID来验证用户身份。

具体来说,这段代码是否安全?

其次,我相信这段代码绝对可以优化,特别是在我调用外部函数来触发成功或错误消息的情况下。你会怎么做呢?

    login: function (req, res) {

    // See `api/responses/login.js`
    User.findOne({
        email: req.param('email')
    }).exec(function (err, user){
        if (err) {
            return res.serverError(err);
        }
        if (!user || !req.param('password')) {
            sails.log.debug('Password or email is missing.');
        }  else {
        bcrypt.compare(req.param('password'), user.password, function(err, res) {
            if (err) {
                return res.serverError(err);
            } if(!res){
                sails.log.debug('password is incorrect!!!!');
                passwordIncorrect(user);
            }if(res){
                sails.log.debug('password is correct!!!!!');
                passwordCorrect(user);

            }
        });
    }

    });

    function passwordCorrect(user){
        //Set session for user
        req.session.me = user.id;

        if (req.wantsJSON || !inputs.successRedirect) {
            return res.ok('Logged in successfully!');
        }
        return res.redirect(inputs.successRedirect);
    }

    function passwordIncorrect(user){
        if (req.wantsJSON || !inputs.invalidRedirect) {
            return res.badRequest('Invalid username/password combination.');
        }
        return res.redirect(inputs.invalidRedirect);
    }
},

0 个答案:

没有答案