【问题标题】:Can I use Salt instead of plain text password in a Passport Strategy?我可以在 Passport 策略中使用 Salt 而不是纯文本密码吗?
【发布时间】:2017-07-29 17:57:40
【问题描述】:

这是我的 Passport js 本地策略:

'use strict';

/**
 * Module dependencies.
 */
var passport = require('passport'),
    LocalStrategy = require('passport-local').Strategy,
    User = require('mongoose').model('User');

module.exports = function() {
    // Use local strategy
    passport.use(new LocalStrategy({
            usernameField: 'username',
            passwordField: 'password'
        },
        function(username, password, done) {
            User.findOne({
                //username: new RegExp(username, 'i')
                username: String(username).toLowerCase()
            }, function(err, user) {
                if (err) {
                    console.log('ERR: ', err);
                    return done(err);
                }
                if (!user) {
                    return done(null, false, {
                        message: 'Unknown user or invalid password'
                    });
                }
                if (!user.authenticate(password)) {
                    return done(null, false, {
                        message: 'Unknown user or invalid password'
                    });
                }
                return done(null, user);
            });
        }
    ));
};

我需要使用电子邮件和加盐密码(存储在 localStorage 中)在 web 视图(不是浏览器)中重新验证我的用户。

我将在此策略中进行哪些更改以使用散列/盐密码重新验证用户? (或者这是一个糟糕的主意?)

【问题讨论】:

    标签: node.js express authentication passport.js


    【解决方案1】:

    默认情况下,使用passportjs,您的密码将被加盐+散列,并且此结果将存储在您的数据库中,因此您永远不会在此技术中使用纯文本密码

    接下来,在本地存储中存储密码(甚至加盐)是一种不好的做法。您应该只询问您的用户他的密码,并且永远不要存储它!最好的方法是存储一个令牌并检查它是否是有效的(jwt 令牌很棒)

    一个例子:https://scotch.io/tutorials/easy-node-authentication-setup-and-local

    【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2019-01-19
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多