res.redirect () висит при первой отправке - PullRequest
0 голосов
/ 04 октября 2019

У меня странная проблема, которую я могу реплицировать только с определенными пользователями. При входе в систему с использованием activedirectory (https://www.npmjs.com/package/activedirectory) только в Google Chrome, при первом нажатии на кнопку входа в систему res.redirect не будет работать. Если они подождут секунду и нажмут клавишу ввода или снова нажмут, она пройдет и какПока они не закрывают Chrome, они могут входить и выходить, сколько захотят, без каких-либо проблем. Подавляющее большинство моих пользователей могут входить в систему без проблем.

Я отправляю логин сформа, а не AJAX, есть некоторые обещания, что все возвращают правильные значения при отладке, поэтому я знаю, что они не являются частью проблемы. Кто-нибудь сталкивался с этим раньше?

app.post('/login',
    function(req, res) {
        var username = req.body.username;
        var password = req.body.password;
        ad.authenticate(username.toLowerCase()+config.adDomain, password, function(err,auth) {
            if (err) {
                console.log('ERROR: '+JSON.stringify(err));
                res.render('login.ejs', {  
                    login: false,
                    message: true
                });
            } else {
                if(auth) {
                    if (req.body.remember) {
                      req.session.cookie.maxAge = 1000 * 60 * 3;
                    } else {
                      req.session.cookie.expires = false;
                    }
                    req.session.isAuthenticated = true;
                    req.session.username = username;
                    let namePromise = ADRequests.getUserFullName(username);
                    namePromise.then(function(fullName) {
                        let setUserInfo = Users.checkUserExists(username,fullName);
                        let seedPTO = PTO.SeedIntialPTOLogin(username);
                        Promise.all([setUserInfo, seedPTO]).then(values => {
                            res.redirect('/');
                        });
                    });
                } else {
                    res.render('login.ejs', {  
                        login: false,
                        message: true
                    });
                }
            }
        });  
    }

1 Ответ

0 голосов
/ 04 октября 2019

перехват исключения поможет вам лучше понять поток, я предпочитаю добавлять метод catch после then

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...