Сеанс Cookie не сохраняется в реакции - PullRequest
0 голосов
/ 14 января 2019

Раньше я делал полнофункциональное приложение с рендерингом на стороне клиента, но по какой-то причине мое приложение дает неопределенное значение для req.user при выполнении запроса get.

Я объясню и постараюсь быть максимально подробным

Сначала я делаю запрос от клиента (http://localhost:3000)

axios.get("http://localhost:8080/auth/google").then(response 

Это мой URL обратного вызова (http://localhost:8080)

router.get("/google/callback", passport.authenticate('google'), (req, res) => {
      res.redirect(http://localhost:3000/home)
})

При этом я ожидал, что мое приложение будет хранить cookie для localhost:3000, т. Е. Всякий раз, когда / где бы я ни делал запрос на маршрутизацию, где есть промежуточное ПО isLoggedIn, я должен иметь возможность доступа к этому маршруту с моего клиента ( http://localhost:3000/) т.е.

отправка запроса от моего клиента

axios.get("http://localhost:8080/home").then(response 

к маршруту (http://localhost:8080)

router.get("/home", MiddlewareAuth.UserLoggedIn, (req, res) => {
   res.send(req.user)
})

должен выдавать / возвращать req.user скорее он возвращает неопределенное значение (на самом деле выдает ошибку, поскольку в моем промежуточном ПО я устанавливаю res.status (401), если пользователь не вошел в систему.

Теперь, если я вручную перехожу к http://localhost:8080/home, я вижу req.user в качестве ответа (невозможно увидеть при выполнении запроса от http://localhost:3000 до http://localhost:8080/home).

Я подозреваю, что мои куки не сохраняются для localhost: 3000 /

Вот так я инициализирую свою сессию

app.use(cors({
    'allowedHeaders': ['sessionId', 'Content-Type'],
    'exposedHeaders': ['sessionId'],
    'credentials': true,
    'origin': ['http://localhost:3000', 'http://192.168.0.86:3000'], 
  }))

  //Storing cookies on the client side 
app.use(cookieSession({
  keys: ["abbcbba2"],
  maxAge: 24 * 60 * 60 * 1000 
}))


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



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

Может кто-нибудь, пожалуйста, помогите мне найти проблему

1 Ответ

0 голосов
/ 14 января 2019

Вы пропустили withCredentials: true в вашем запросе axios.

Попробуйте это

axios.get("http://localhost:8080/home", {withCredentials: true}).then(response 

И это, вероятно, должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...