Я использую graphql-yoga для создания моего graphql 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.dev Docker-compose.dev.yml
Если кому-то нужен полный код на 100%, здесь вы можете найти егои вы можете запустить его с docker-compose -f docker-compose.dev.yml up --build
в папке сервера.