[英]req.login is not logging the user
我正在尝试使用ajax将发布请求发送到服务器,并确保发布请求不会刷新页面(使用e.preventDefault)。 在服务器上,我要检查用户名或电子邮件是否已被使用以及是否未被使用,然后自动将用户登录,然后刷新页面。 问题是当我调用req.login并提交要登录的数据时,它似乎不起作用,但页面仍刷新。 有任何想法吗?
app.post('/signup', function (req, res) {
var userDetails = User({
username: req.body.username,
email: req.body.email,
password: bcrypt.hashSync(req.body.password1, bcrypt.genSaltSync(10))
});
User.findOne({
$or: [{
'username': req.body.username
}, {
'email': req.body.email
}]
}, function (err, user) {
if (user) {
if (allClients.indexOf(req.body.socket)) {
if (user.username === req.body.username) {
io.to(req.body.socket).emit('userInfo', 'That username is already in use.');
} else {
}
if (user.email === req.body.email) {
io.to(req.body.socket).emit('userInfo', 'That email is already in use.');
} else {
}
} else {
console.log('timeout error 822')
}
} else {
req.login(userDetails, function (err) {
if (!err) {
userDetails.save(function (err) {
if (err) throw err;
res.redirect('/');
});
} else {
console.log(err)
}
})
}
if (err) {
return done(err);
}
});
});
这是我发出ajax发布请求的地方。 如您所见,我阻止表单提交刷新页面,但是如果表单成功,它将提交。
$("#form1").submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: '/signup',
data: $(this).serialize(),
success: function(data)
{
window.location.reload(true);
}
});
});
我相信您的“已接受”消息被您的API视为成功。 您可以在这些情况下引发错误并使用$.ajax
catch
,或者设置其他响应并在success
读取data
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.