首页 > 解决方案 > Passport ReferenceError:未定义错误

问题描述

我想做一个登录表单,我做了几乎所有的修复,但如果我注册成功并且我想登录,如果密码正确或不正确,它就会抛出:

UnhandledPromiseRejectionWarning: ReferenceError: err is not defined 所以我查了一下,错误消息是这样bcrypt.compare(password, user.password, (err, isMatch => { 的:如果用户名错误或不存在,它只是用错误消息重定向我,就像我编程它一样。完整的控制器/passport.js 文件

module.exports = function (passport) {
    passport.use(
        new LocalStrategy({ usernameField: 'username' }, (username, password, done) => {
            // Matching
            User.findOne({ username: username })
                .then(user => {
                    if (!user) {
                        return done(null, false)
                    }
                    bcrypt.compare(password, user.password, (err, isMatch => {
                        if (err) throw err;
                        if (isMatch) {
                            return done(null, user);
                        } else {
                            return done(null, flase, { message: 'Passwort nicht korrekt' })
                        }
                    }))
                })
        })
    )
    passport.serializeUser( function (user, done) {
        done(null, user.id);
    });

    passport.deserializeUser( function (id, done) {
        User.findById(id,function (err, user) {
            done(err, user);
        });
    });
}

我将此模块包含在我的 routes.js 中 // 登录

router.get('/', forwardAuthenticated, (req, res) => {
    res.render('login/index');
})
router.post('/', (req, res, next) => {
    passport.authenticate('local', {
        successRedirect: '../admin',
        failureRedirect: '/login'
    })(req, res, next)
})

应用程序.js

require('./controller/passport')(passport);
app.use(passport.initialize());
app.use(passport.session());

我试图删除错误,但没有定义错误,我查找了护照文件,但我没有找到任何东西,有什么想法吗?我使用快递、护照、本地护照、猫鼬

标签: node.jsexpressauthenticationpassport.jspassport-local

解决方案


推荐阅读