Стратегия Gihub для Passport.js: принудительный вход пользователя в систему

Я создаю веб-приложение React.js, использующее стратегию GitHub Passport.js, чтобы предоставить пользователям возможность аутентификации через GitHub. Приложение использует промежуточное ПО Express.js для предоставления маршрутов, которые взаимодействуют с паспортом для аутентификации пользователя, а также маршрута для обслуживания приложения React.js. Аfetch() запрос в приложении React.js render() метод использует auth/test route в моем промежуточном программном обеспечении Express:


    //AUTH TEST route: Tests whether user was successfully authenticated.
    //Should be called from the React.js client to set up app state.
    app.get('/auth/test', (req, res) => {
        console.log("auth/test reached.");
        let userObject = {};
        const isAuth = req.isAuthenticated();
        if (isAuth) {
            //populate 'user' property, which must exist since isAuth===true
            console.log("User is authenticated");
            userObject.id = req.user.username + "@github";
            userObject.username = req.user.username;
            userObject.provider = "github";
            userObject.profileImageUrl = req.user.photos[0].value;
        } else {
            //Keep 'user' property empty: 'user' prop does not exist
            console.log("User is not authenticated");
        }
        //Return JSON object to client with results.
        res.json({isAuthenticated: isAuth, user: userObject});
    });

для проверки подлинности пользователя и соответствующего обновления состояния.

Все работает нормально. Однако, похоже, что когда пользователь, прошедший аутентификацию через GitHub, выходит из системы, а затем пытается снова войти в систему с помощью GitHub, пользователь сразу же повторно аутентифицируется через GitHub и повторно входит в приложение БЕЗ ДАЖЕ ВИДА "Войти в GitHub". страница!

Я думал, что это связано с тем, что срок действия cookie req.session не истек, когда пользователь снова входит в систему, поэтому проверка подлинности пользователя все еще хороша. Однако даже когда я удаляю файл cookie, пользователь может снова войти в систему без запроса на повторную аутентификацию через страницу входа OAuth GitHub, которая выглядит следующим образом:

Вход на GitHub OAuth

После долгих проб и ошибок оказалось, что единственный способ заставить ранее вошедшего в систему пользователя пройти повторную аутентификацию через страницу входа OAuth GitHub - это

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

Может кто-нибудь объяснить это? Пожалуйста, дайте мне знать, есть ли способ заставить пользователя явно повторно проходить аутентификацию с помощью GitHub OAuth (путем взаимодействия со страницей входа GitHub) при каждом входе в систему.

По запросу я был бы рад предоставить больше моего серверного кода, который довольно прост.

0 ответов

Другие вопросы по тегам