Я использую graphql-yoga для создания своего графического интерфейса api, конфигурация экспресс-сессии такова:
session({
store: new RedisStore({
client: redis as any,
prefix: redisSessionPrefix
}),
name: "qid",
secret: process.env.SESSION_SECRET as string,
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
secure: process.env.NODE_ENV === "production", // Only works with https
maxAge: 1000 * 60 * 60 * 24 * 7 // 7 days
}
})
Полный код здесь.
Затем, если какой-либо пользователь хочет войти в систему, сеанс сохраняется следующим образом:
session.userId = user.id;
user.id взят из ORM под названием TypeORM, найти пользователя можно только по электронной почте, и я помещаю идентификатор этого пользователя в session.userId. Полный код здесь.
А затем, если я хочу проверить, вошел ли пользователь в систему или нет, я использую запрос:
User.findOne({ where: { id: session.userId } })
Этот предыдущий код выполняет только Entity из TypeORM с именем User, который определяет только, у какого пользователя есть session.userId. Но этот session.userId не определен ... Полный код здесь
Кто-нибудь знает почему?
Это конфигурации докеров, которые я использую для разработки.
Dockerfile.devDocker-compose.dev.yml
Если кому-то нужен 100% полный код здесь, вы можете его найти, и вы можете запустить его с docker-compose -f docker-compose.dev.yml up --build в папке сервера.


Если кто-то хочет знать, мне помог Бен Авад из Твиттер, решение было добавить в графическую площадку request.credentials: include, и все :)
Пришел сюда из шаблона Бен Авада!