Node.js 护照认证现有用户消息

问题描述 投票:0回答:1

我正在使用 Node.js Express 来构建我的应用程序。我使用护照作为我的身份验证系统。

我是一名 Python 开发人员,所以我对 JS 很陌生。如何更改我的代码,以便如果用户存在,它会在当前屏幕上弹出消息“用户已存在”?

当前它清除页面并仅显示“用户已存在”

passport.use('signup-local', new LocalStrategy({
    usernameField: "email",
    passwordField: "password"
}, function(email, password, next) {
    User.findOne({
        email: email
    }, function(err, user) {
        if (err) return next(err);
        if (user) return next({message: "User already exists"});
        let newUser = new User({
            email: email,
            passwordHash: bcrypt.hashSync(password, 10)
        })
        newUser.save(function(err) {
            next(err, newUser);
        });
    });
}));



app.post('/signup',
    passport.authenticate('signup-local', { failureRedirect: '/' }),
    function(req, res) {
        res.redirect('/');
    });
javascript node.js web passport.js
1个回答
0
投票

错误出在

User.findOne
函数的回调函数中。您需要将已传递的参数反转为相同的参数,即来自此:

 User.findOne({
        email: email
    }, function(err, user) {  <===
        if (err) return next(err);

对此:

 User.findOne({
        email: email
    }, function(user, err) { <== correct
        if (err) return next(err);
© www.soinside.com 2019 - 2024. All rights reserved.