Ответов, которые я нашел до сих пор:
- Нужно добавить метод
withCredential
к суперагенту, чтобы он отправлял куки аутентификации:
res = await superagent
.get(url)
.withCredentials()
.send();
На стороне CORS, на сервере, опция 'credentials' требуется, если используется модуль 'cors' npm, например:
app.use(cors({
origin: ['http://localhost:3003'],
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
credentials: true,
}));
Вся информация о сеансе автоматически извлекается этими модулями. Однако во многих примерах показано, что этот вызов возвращается в пользовательскую базу данных для получения дополнительной информации (права, другая информация). Цель состоит в том, чтобы не иметь одинаковую информацию в двух местах (сеансы БД и профили пользователей БД) и не получать их из синхронизации c (когда учетная запись закрывается и т. Д. c ...)
req.logout()
отключает сеанс, но информация о сеансе остается в базе данных. Следующий вопрос поставил меня на правильный путь: как удалить cook ie при выходе из системы express + passport js? . Вам нужно использовать req.logout, res.session.destroy, и пока вы это делаете, res.clearCook ie для удаления клиента готовит ie:
router.post('/logout/',
(req, res) => {
req.logout();
res.status(200).clearCookie('connect.sid', {
path: '/',
secure: false,
httpOnly: false,
domain: 'place.your.domain.name.here.com',
sameSite: true,
}).end();
req.session.destroy();
},
Сеанс отключен, база данных очищена, повар ie пропал.