繁体   English   中英

req.login未记录用户

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM