Почему в паспортном сеансе говорится, что я вошел в систему, только если я позвонил на экспресс-сервер, используя href? - PullRequest
0 голосов
/ 18 февраля 2019

Я использую MEAN стек

Код на стороне сервера:

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

router.get('/users/google/redirect', function (req, res, next) {
   console.log(req.isAuthenticated())
   console.log(req.session);
   passport.authenticate('google', function(err, user, info) {
   if (err) { return next(err); }
   req.logIn(user, function(err) {
    if (err) { return next(err); }
    return res.redirect('http://localhost:4200/');
  });
})(req, res, next);

});

 router.get('/logout', loggedIn,function(req, res){
    console.log(req.isAuthenticated());
    req.logout();
    return res.redirect('http://localhost:4200/register');
 });

function loggedIn(req, res, next) {

 if (req.user) {
   console.log('LOGED');
   next();
 } else {
   res.redirect('/login');
 }
}

Вот так я могу войти с помощью angular

OnNavigate() {
   console.log('aaaa')
   window.open("http://localhost:3000/users/google", "_blank");
 } 

Теперь, если я позвоню / выйду из системыкак это: Различные файлы:

logOut() {
this.userService.logOut().subscribe();
}


logOut(): Observable<any> {
    console.log('From uSEr');
    return this.apiService.get('/logout')
        .pipe(map(
            data => {
                console.log(data);
                return data;
            }
        ));
}

 get(path: string, params: HttpParams = new HttpParams()) : Observable<any> 
{
  console.log(`${environment.api_url}${path}`);
  return this.http.get(
    `${environment.api_url}${path}`, { params }
  );

} 

На стороне сервера говорит, что я не вошел в систему. Но если я звоню / выходу из системы, как это:

 <a href="http://localhost:3000/logout"class="nav-item nav-link">

Это работает, он говорит, что я вошел в системув. Почему это?

Также, если я вхожу с запросом get, я получаю ошибку политики cors.

Конфигурация сервера:

var app = express();
app.use(cors());

  // Normal express config defaults
app.use(require('morgan')('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

 app.use(require('method-override')());
 app.use(express.static(__dirname + '/public')) ;
 //app.use(cookieParser(sessionOpts.secret))
  app.use(session(sessionOpts))
  app.use(passport.initialize())
  app.use(passport.session())

PS: У меня естьфункции serializeUser, deserializeUser ...

...