Стратегия 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, которая выглядит следующим образом:
После долгих проб и ошибок оказалось, что единственный способ заставить ранее вошедшего в систему пользователя пройти повторную аутентификацию через страницу входа OAuth GitHub - это
- выключить мой сервер и перезапустить его,
- закройте мой браузер и перезапустите его, и
- открыть URL-адрес моего приложения в частном (в когнитивном) окне.
Может кто-нибудь объяснить это? Пожалуйста, дайте мне знать, есть ли способ заставить пользователя явно повторно проходить аутентификацию с помощью GitHub OAuth (путем взаимодействия со страницей входа GitHub) при каждом входе в систему.
По запросу я был бы рад предоставить больше моего серверного кода, который довольно прост.