Мое приложение разделено между клиентом и сервером.Клиент - это приложение Nextjs на стороне клиента, расположенное на Now.sh, сервер - это его бэкэнд, созданный с помощью Express и размещенный на Heroku, поэтому это домены client-app.now.sh и server-app.herokuapp.com.
Аутентификация
Система аутентификации основана на файлах cookie, и я использую экспресс-сессию для ее достижения.Это моя конфигурация экспресс-сеанса
app.use(
session({
store:
process.env.NODE_ENV === "production"
? new RedisStore({
url: process.env.REDIS_URL
})
: new RedisStore({
host: "localhost",
port: 6379,
client
}),
name: "sessionID",
resave: false,
saveUninitialized: false,
secret: keys.SESSION,
unset: "destroy",
cookie: {
domain:
process.env.NODE_ENV === "production"
? ".client-app.now.sh"
: "localhost",
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 7 * 24 * 60 * 60 * 1000
}
})
);
Cors установлен с пакетом "cors":
app.use(
cors({
origin:
process.env.NODE_ENV === "production"
? process.env.CLIENT_URL
: "http://localhost:3000",
credentials: true
})
);
Клиент настроен с Apollo, а для "credentials" в HttpLink установлено "include ".
Проблема в том, что cookie с идентификатором сеанса правильно установлен в разработке, но не в производстве.Может ли это быть связано с тем, что я размещаю клиент и сервер в разных доменах?