«Невозможно установить заголовки после отправки» Паспорт js при успешном перенаправлении - PullRequest
0 голосов
/ 07 августа 2020

Я использую местный паспорт и express. В моем приложении. js У меня есть:

passport.use(new LocalStrategy(
    { usernameField: 'email' },
        function(email, password, done) {
            if(users=='') {
                return done(null, false, { message: 'Incorrect username.' });
            }
            users.find((user) => {
                user.validPassword = (pwd) => {
// password is plain text for the purpose of practicing
                    if(pwd===user.password) {
                        return true;
                    }
                    return false;
                }
                if(user.email!==email) {
                    console.log("email: " + email)
                    console.log("user: " + user.email)
                    return done(null, false, { message: 'Incorrect username.' });
                }
                if(!user.validPassword(password)) {
                    return done(null, false, { message: 'Incorrect password.' });
                }
                return done(null, user);
            },
            passport.serializeUser(function(user, done) {
                done(null, user);
            }),
            
            passport.deserializeUser(function(user, done) {
                done(null, user);
            })
        )
    })
);

и

app.post('/login',
    passport.authenticate('local',
    {
        successRedirect: '/',
        failureRedirect: '/login',
        failureFlash: true,
    }
));

Когда я регистрируюсь один раз и вхожу в систему, все в порядке. Но когда я регистрируюсь во второй раз и вхожу в систему, отображается ошибка

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

.

Но когда я удаляю успешные и неудачные перенаправления, веб-сайт работает нормально независимо от того, сколько пользователей зарегистрирован (но, конечно, мне нужно вручную перейти на следующую страницу).

Как я могу использовать успешное и неудачное перенаправление, не получая ошибки?

Спасибо

...