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