Один пользователь вошел в систему для всех, используя PassportJS-Google-Oauth2 и rethinkDB - PullRequest
0 голосов
/ 20 сентября 2018

Я столкнулся с большой проблемой при использовании PassportJS и RethinkDB.Когда я вхожу в систему на моем компьютере, все работает нормально, но я также захожу на сайт для всех остальных, использующих сайт.На каждом устройстве.Я предполагаю, что это как-то связано с сессиями, но я не могу найти проблему.Я подключаю свой код PassportJS ниже.Я использую NodeJS и ExpressJS.

app.use(cookieParser());
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(bodyParser());
app.use(cookieSession({ secret: 'cookietrash', cookie: {maxAge: 60 * 60 * 24} }));
app.use(passport.initialize());
app.use(passport.session());







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

passport.deserializeUser(function(id, done){

    r.table('users').filter({id: id}).run(function(err, result){
      if(err) throw err;
        done(null, result);
    })

  done(null, user);
});


passport.use(new GoogleStrategy({
  clientID: 'MY-ID',
  clientSecret: 'MY-CS',
  callbackURL: "/auth/google/callback"
},
  function(accessToken, refreshToken, profile, cb) {

    r.table('users').filter({id: profile.id}).run(function(err, result){
      if(err) throw err;
        // Create account if no account
        if(result.length === 0){
          var str = profile._json.image.url;
          var res = str.split("?sz=50")[0]+"";
          console.log('new user');
          r.table('users').insert({

            id: profile.id,
            avatar: res,
            name: profile.displayName,

          }).run(connection), function(err, result){
            if(err) throw err;
            cb(null, result)
          }
        }else{
          cb(null, result)
          console.log('returning user');
        }
    });


}));

app.get('/auth/google',
  passport.authenticate('google', { scope: ['profile'] }
));

app.get('/auth/google/callback',
  passport.authenticate('google', { failureRedirect: '/' }),
  function(req, res) {
    res.redirect('/earn');
});
...