伙计们我正在尝试对自己进行身份验证,为此我使用的是node.js和mongo DB.But事情是,在注册后,用户无法对自己进行身份验证。这是我的代码段
app.post('/login',function(req,res){
ContactProvider.findAll(function(error, posts) {
var aut = req.body;
if (aut.user == posts.user && aut.pass == posts.pass) {
req.session.name = {name:aut.user};
res.redirect('/home');
} else {
res.send('Bad user/pass');
}
});
});
以下是我注册用户的代码段
app.post('/register',function(req, res) {
var post=req.body;
if(post.pass!=post.cpass) {
res.send("Error:Password doesnt match");
} else {
ContactProvider.save({
user: req.param('user'),
pass: req.param('pass'),
cpass: req.param('cpass'),
email: req.param('email')
}, function(error, docs) {
res.redirect('/');
});
}
});
ContactProvider是下面的一个,其中post post是一个不同的文件,其中发生了所有猫鼬事件
var ContactProvider = require('./PostProvider').ContactProvider;
var ContactProvider= new ContactProvider();
这是postprovider文件中的finone查询
ContactProvider.prototype.findone = function(name,pass, callback) {
Post.findOne({name:name},{pass:pass}, function (err, post) {
callback(null, post);
});
};
答案 0 :(得分:0)
您的代码存在严重问题(为什么您使用名称posts
作为ContactProvider
数组?)。您必须根据用户名和密码搜索ContactProvider
。像这样:
app.post('/login',function(req,res){
var aut = req.body;
ContactProvider.findOne(
{
user: aut.user,
pass: aut.pass
},
function(err, usr) {
if (error || !usr) {
res.send('Bad user/pass');
} else {
// we have a user, authenticate!
req.session.name = {name:aut.user};
res.redirect('/home');
}
}
);
});
SIDE注意:这是一种非常简单的用户身份验证方式,但根本不安全。您应该阅读有关互联网身份验证和安全性的更多信息。确实非常有用的知识。
编辑:您的注册也存在问题。您的数据存储在post
变量中,因此也可以在ContactProvider
上使用它:
// some other code
ContactProvider.save({
user: post.user,
pass: post.pass,
cpass: post.cpass, // no need to store the same thing twice
email: post.email