我正在尝试使用MEAN为我的网站实现身份验证系统,但是我遇到了一个相对奇怪的问题。我能够注册用户,并且可以识别重复的用户名。但是,我无法登录网站工作。当我使用命令行搜索mongo数据库时,我什么都没得到。这就是我的mongo输出的样子。
>> show users
>>
数据库在某个地方有用户名...所以如何让用户正确显示?当我尝试登录时,为什么该用户未定义,即使我知道用户名在数据库中?
var crypto = require('crypto');
var mongoose = require('mongoose');
var User = mongoose.model('User');
function hashPW(pwd) {
return crypto.createHash('sha256').update(pwd).digest('base64').toString();
};
module.exports.signup = function (req,res) {
var user = new User({username:req.body.usernmae});
console.log('made it here');
user.set('hashed_password', hashPW(req.body.password));
user.set('email', req.body.email);
user.save(function (err) {
if (err) {
try {
if (err.code==11000) res.render('signup', {message: 'Sorry, someone has that username already.'})
} catch(e) {
}
console.log(err);
//res.redirect('/signup');
} else {
req.session.user = user.id;
req.session.username = user.username;
req.session.msg = 'Authenticated as ' + user.username;
res.redirect('/');
}
});
};
module.exports.login = function (req,res) {
User.findOne({ username: req.body.username })
.exec(function(err,user) {
console.log(user);
console.log(err);
console.log(hashPW(req.body.password.toString()));
if (!user) {
err = 'User Not Found.';
} else if ( user.password === hashPW( req.body.password.toString() ) ) {
req.session.regenerate(function() {
req.session.user = user.id;
req.session.username = user.username;
req.session.msg = 'Authenticated as ' + user.username;
res.redirect('/');
});
} else {
err = 'Authentication failed.';
}
if (err) {
console.log(err);
req.session.regenerate(function() {
req.session.msg = err;
res.redirect('/login');
});
}
});
};
答案 0 :(得分:0)
我注意到提供的代码中存在拼写错误。
var user = new User({username:req.body.usernmae});
应该阅读
var user = new User({username:req.body.username});
这可能意味着名称未能设置,因此将垃圾用户放入您的数据库。
另外,关于你在Mongo Shell中的命令,Neil的答案涵盖了show命令在这里实际上没用。 The reference for db.collection.find() is here.
答案 1 :(得分:0)
password
,而是hashed_password
。
{ email: 'somerandomemail@gmail.com',
hashed_password: 'A8ctR3JAA84DWTmYXEAhxEEP1bTtAidaoyWArKHtk2g=',
username: 'Szpok',
_id: 54c09c458c4eccc90b9c4bb5,
__v: 0 }