护照缺少凭证

时间:2020-08-06 15:50:16

标签: node.js express passport.js

好吧,我尝试研究了很多其他类似的案例,但是由于它不完全符合我的能力,所以找不到真正的解决方案。

当我尝试登录时,出现错误

缺少凭据

如果我的表单为空,或者用户名/密码为空。

但是,如果我用错误的信息填写表格,则会得到我想要的自定义错误。

这是我的路线

server.get('/login', async (req, res) => {
    if(typeof req.user != 'undefined')
        res.redirect('/loginRedirect')

    else
    res.render('public assets/template.ejs', {
        page_title: "iWatched.xyz - Sign in/up",
        page_file: "login",
        page_data: {
            login_error: req.flash(),
            signup_error: req.flash()
        },
        user: req.user
    });
});
server.post('/login',
    passport.authenticate('local-login', {
        successRedirect: '/loginRedirect', 
        failureRedirect: '/login', 
        failureFlash: true 
    })
);

这是我的本地登录策略

passport.use('local-login', new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
    passReqToCallback: true 
},
    function (req, login, password, done) { 
        User.findOne({$or: [
            {'local.email':new RegExp('^'+login+'$', "i") },
            {'local.username': new RegExp('^'+login+'$', "i")}
        ]}, function (error, user) {

            if (error)
                return done(null, false, req.flash('error', {'error': error, 'login' : login})); 

            if (!user)
                return done(null, false, req.flash('error', {'error': 'No user found.', 'login' : login})); 

            if (!user.validPassword(password))
                return done(null, false, req.flash('error', {'error': 'Oops! Wrong password.', 'login' : login}));

            return done(null, user);
        });
    })
);

很抱歉,如果我在这里的其他地方错过了答案,但是我经历了很多不同的尝试而没有运气,我将不胜感激:)

0 个答案:

没有答案