Проблема с connect.sid и сессией в приложении node.js, в производственной среде - PullRequest
0 голосов
/ 15 января 2020

Приложение узла использует passport-ldap для аутентификации, и проблема в том, что оно работает как прелесть в среде разработки, но есть проблемы в рабочей. Когда маршрут изменяется, я теряю сеанс пользователя, потому что изменяется connect.sid (повар ie) приложения, потому что у меня есть новый ответ setCook ie.

Я используя express 4.17.1 и express -сессию 1.16.2 , поэтому из своего исследования я обнаружил, что мне не нужно использовать cookieParser. Я также думаю, что нет проблем с сериализацией и десериализацией пользовательских функций и функций паспорта.

// Static folder set
app.use(express.static(path.join(__dirname, 'public')));

// Body parser middleware

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());


app.set('trust proxy', 1) //trust first proxy

// Express session midleware 
app.use(session({
  secret: 'abc',
  resave: true,
  saveUninitialized: true,
  cookie: { secure: true }
}));

// Passport middleware
app.use(passport.initialize());
app.use(passport.session());

...

// Use routes of the application
app.use('/users', users);

1 Ответ

0 голосов
/ 17 января 2020

Я нашел решение и выложил его для дальнейшего использования, если кто-то еще столкнется с подобной проблемой.

Я использовал модуль cors и установил его так:

app.use(cors({credentials: true}));

также в производственной среде вы должны использовать магазин, чтобы держать повара ie. Это было очевидно, но я пропустил это. Так что я использовал

const MongoStore = require('connect-mongo')(session);

app.use(session({
  secret: 'abc',
  resave: false,
  saveUninitialized: false,
  cookie: { secure: true,
    maxAge:  6*60*60*1000 },
  store: new MongoStore({ mongooseConnection: mongoose.connection })
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...