Экспресс сессия не сохраняется сессия в Graphql через Docker - PullRequest
0 голосов
/ 17 декабря 2018

Я использую 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 в папке сервера.

1 Ответ

0 голосов
/ 17 декабря 2018

Если кто-то хочет знать, Бен Авад из Twitter помог мне, решение было добавить в GraphQl-Playground request.credentials: include, и вот оно:)

enter image description here

...