Стратегия Gihub для паспорта. js: заставить пользователя войти в систему - PullRequest
0 голосов
/ 29 февраля 2020

Я создаю веб-приложение 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»!

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

GitHub OAuth sign-in

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

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

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

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

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