Невозможно прочитать куки из браузера после паспорта - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь реализовать приложение ReactJS, которое работает с Node.JS с экспресс-доступом, и я использую PassportJS google oauth20 для аутентификации.

Аутентификация проходит без проблем, и когда я открываю инструменты Chrome для разработчиков, я вижу, что у меня есть 2 куки, введенных после аутентификации, проблема в том, что когда я пытаюсь получить их с помощью react-cookie или js-cookie или событие с document.cookie ничего не возвращается

Приложение для Express основано на экспресс-генераторе Приложение:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var passport = require('passport');
const passportSetup = require('./config/passport');
const cookieSession = require('cookie-session');

// some router imports here
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

/

app.use(cookieSession({
  maxAge: 60 * 60 * 1000,
  keys: ['mysuperseacretcat']
}));

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

app.use('/', indexRouter);
app.use('/auth', authRouter);
app.use('/users', usersRouter);
app.use('/orders', ordersRouter);
app.use('/orderdetails', orderDetailsRouter);
app.use('/suppliers', suppliersRouter);


// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});


app.get("*", function(req, res) {
  res.sendFile(path.join(__dirname, "client/build", "index.html"));
});

module.exports = app;

Конфигурация паспорта:

const passport = require("passport");
const GoogleStrategy = require("passport-google-oauth20");

passport.serializeUser((user, done) => {
  done(null, user.id);
});

passport.deserializeUser((id, done) => {
  done(null, id);
});

passport.use(
  new GoogleStrategy(
    {
      callbackURL: "/auth/google/redirect",
      clientID: "ENV",
      clientSecret: "ENV"
    },
    (accessToken, refreshToken, profile, done) => {
      if (profile._json.email.split('@')[1] !== 'xxx' || profile._json.hd !== 'xxx') {
        done(null, false);
      } else {
        done(null, profile)
      }
    }
  )
);

Google Auth Routes:

router.get(
  "/google", passport.authenticate("google", {
    scope: ["profile", "email"]
  })
);

router.get("/google/redirect", passport.authenticate('google'), (req, res) => {
  res.redirect('/');
});

Кажется, я не понимаю, как я должен проверить после процесса аутентификации, что пользователь вошел в систему с помощью реакции. Кроме того, я не использую хранилище БД, так как оно мне не нужно, мне просто нужно убедиться, что пользователь вошел в систему. (Это то, что можно сделать или сохранить пользователя - обязательно?) Чего мне не хватает?

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