这是我的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中)在webview(而不是浏览器)中重新验证我的用户。
在使用散列/ salt密码重新验证用户的策略中,我会更改哪些内容? (或者这是一个可怕的想法?)
答案 0 :(得分:3)
默认情况下使用passportjs,您的密码将被加盐+哈希,并且此结果将存储在您的数据库中,因此您绝不使用此技术的纯文本密码
接下来,在localstorage中存储密码(甚至是盐渍的)是一种不好的做法。您应该只询问您的用户他的密码,并且永远不要存储它!最好的方法是存储令牌并检查它是否是有效的(jwt令牌很棒)
一个例子:https://scotch.io/tutorials/easy-node-authentication-setup-and-local