Невозможно получить доступ к req.user после развертывания в HTTPS - PullRequest
1 голос
/ 16 июня 2019

Я создаю веб-приложение, которое требует от своих пользователей входа в систему, а функции создаются с использованием объекта passport.js req.user. Это не вызвало проблем при работе на localhost; однако после развертывания приложение сообщило, что req.user является «неопределенным».

Я просмотрел код passport.js и он похож на предыдущие проекты, которые работали при развертывании. Я видел еще одну публикацию, посвященную описанию стека, с аналогичной проблемой, но решение заключалось в том, чтобы этот код был в файле server.js.

app.use(
  session({
   store: new redis({ url: process.env.REDIS_URL }),
    secret: process.env.REDIS_SECRET,
    resave: false,
    saveUninitialized: false,
  }),
);

app.use(passport.initialize());
app.use(passport.session());

Я ожидал, что смогу получить объект req.user так же, как в localhost, но в производственной среде я получу следующую ошибку.

<code>ERROR Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":500,"statusText":"OK","url":"https://mylingual.me/api/decks","ok":false,"name":"HttpErrorResponse","message":"Http failure response for https://mylingual.me/api/decks: 500 OK","error":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>TypeError: Cannot read property &#39;id&#39; of undefined<br> &nbsp; &nbsp;at router.route.get (/app/server/routes/decks.js:21:32)<br> &nbsp; &nbsp;at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)<br> &nbsp; &nbsp;at next (/app/node_modules/express/lib/router/route.js:137:13)<br> &nbsp; &nbsp;at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)<br> &nbsp; &nbsp;at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)<br> &nbsp; &nbsp;at /app/node_modules/express/lib/router/index.js:281:22<br> &nbsp; &nbsp;at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)<br> &nbsp; &nbsp;at next (/app/node_modules/express/lib/router/index.js:275:10)<br> &nbsp; &nbsp;at Function.handle (/app/node_modules/express/lib/router/index.js:174:3)<br> &nbsp; &nbsp;at router (/app/node_modules/express/lib/router/index.js:47:12)<br> &nbsp; &nbsp;at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)<br> &nbsp; &nbsp;at trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)<br> &nbsp; &nbsp;at /app/node_modules/express/lib/router/index.js:284:7<br> &nbsp; &nbsp;at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)<br> &nbsp; &nbsp;at next (/app/node_modules/express/lib/router/index.js:275:10)<br> &nbsp; &nbsp;at SessionStrategy.strategy.pass (/app/node_modules/passport/lib/middleware/authenticate.js:338:9)
\ п \ п \ п "} at resolPromise (zone.js: 831) at resolPromise (zone.js: 788) at zone.js: 892 в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js: 423) в Object.onInvokeTask (core.js: 17290) в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js: 422) в Zone.push ../ node_modules / zone.js / dist / zone.js.Zone.runTask (zone.js: 195) на канале MicroTaskQueue (zone.js: 601) в ZoneTask.push ../ node_modules / zone.js / dist / zone.js.ZoneTask.invokeTask [as invoke] (zone.js: 502) в invokeTask (zone.js: 1744)

Редактировать # 1: Не уверен, что это будет проблемой, но мое приложение также работает в HTTPS.

...