Повар ie не установлен и отправлен по Express паспорту - PullRequest
1 голос
/ 29 апреля 2020
index.js 
const express = require('express')
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const MongoStore = connectMongo(session);
const app = express()

const sessionStore = new MongoStore({ 
    mongooseConnection: connection, 
    collection: 'sessions' 
})

app.use(session({
    secret: 'mysecret',
    resave: false,
    saveUninitialized: true,
    store: sessionStore,
    cookie: {
        maxAge: (1000 * 60)*10
    },
    httpOnly: true,
    secure: false
}));
app.use(passport.initialize());
app.use(passport.session());


passport.serializeUser((user, done) => {

    console.log(user._id: " + user._id); 
    done(null, user._id)
})

const GoogleStrategy = passportGoogle.OAuth2Strategy

const strategy = app => {
  const strategyOptions = {
    clientID: GOOGLE_ID,
    clientSecret: GOOGLE_SECRET,
    callbackURL: `/auth/google/callback`
  }

  const verifyCallback = async (accessToken, refreshToken, profile, done) => {

    let [err, user] = await to(getUserByProviderId(profile.id))
    if (err || user) {
      return done(err, user)
    }

    const [createdError, createdUser] = await to(
      createUser({
        provider: profile.provider,
        ...
      })
    )

    return done(createdError, createdUser)
  }

  passport.use(new GoogleStrategy(strategyOptions, verifyCallback))

  app.get('/auth/google/callback',
    passport.authenticate('google'),
    (req, res) => {
      res.cookie('???what is default key set by PassportJS???', req.user._id);
      res.redirect(303, `/loggedByGoogle.html`);
    }

I succesfully 
- logged in with Google, 
- passport.serializeUser was invoked
- profile data was saved in MongoDB,
- redirection happened to `/loggedByGoogle.html`
but no cookies were sent to client
and there is no entry in "sessions" data store after login.

Нужно ли самому явно устанавливать и отправлять куки?

Только после того, как я добавил res.cook ie ('foo', 'bar'); впереди res.redirect (303, /loggedByGoogle.html); Я получил немного повара ie на стороне клиента.

Я думаю, что файлы cookie были установлены внутри Passport после вызова serializeUser. Имеется ли по умолчанию паспорт ie имя (ключ), заданный в Passport?

Что мне не хватает?

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