У меня есть экспресс-сервер, обслуживающий несколько страниц, где некоторые нуждаются в аутентификации. Я запускаю pm2 с 8 серверами. Я использую @ aws-ampify / auth на сервере и сохраняю токен в куки. У меня есть промежуточное ПО, которое извлекает куки и добавляет заголовок авторизации перед переходом на защищенные страницы. метод currentAuthenticatedUser () не использует заголовок. возвращается не вошедший в систему. Как правильно отправить заголовок авторизации с помощью express или использовать правильный метод на сервере для аутентификации?
Экспресс промежуточное ПО для установки заголовка из cookie
app.use((req, res, next) => {
const token = req.cookies.key;
// console.log('isAuthorized', token);
if (token) {
console.log('Found Authorization header');
req.headers['Authorization'] = `${token}`;
}
next();
});
Экспресс-маршрут для установки файлов cookie при успешном входе в систему
router.post('/signin', async (req, res, next) => {
const { username, password } = req.body;
if (!username || !password) {
return res.sendStatus(403);
}
await Auth.signIn(username, password)
.then(user => {
const token = user.signInUserSession.idToken.jwtToken;
res.cookie('key', token, { maxAge: (60 * 60 * 24 * 1000), httpOnly: true });
console.log('set token');
res.sendStatus(200);
})
.catch(err => {
console.log(err);
res.sendStatus(403);
});
});
Экспресс-маршрут для возврата авторизованных пользователей
const isAuthorized = async (req, res, next) => {
console.log('headers', Boolean(req.headers.Authorization));
await Auth.currentAuthenticatedUser()
.then(user => {
console.log('signed in');
next();
})
.catch(err => {
console.log('Not signed in', err);
res.redirect(302, '/login');
});
}
Мой ожидаемый результат - когда пользователь входит в систему, и я хочу, чтобы его статус входа сохранялся с использованием действительных токенов jwt.