Паспортных данных в JS сессии в Angular2

каков наилучший способ отправки информации о сеансе паспорта с заднего конца на интерфейс?

мое приложение, которое работает на порту 3000. Первые два предназначены для входа в facebook и перенаправления. Следующий-получить данные пользователя из базы данных (идентификатор пользователя должен храниться в req.user)

маршруты.js:

app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' }));

app.get('/auth/facebook/callback',
        passport.authenticate('facebook', {
            successRedirect : 'http://localhost:8000/',
            failureRedirect : '/fail'
        })
);

app.get('/auth/userdata', isLoggedIn, function(req, res) {
    Donator.findById(req.user, function(err, fulluser) {
        if (err) throw err;
        res.json(fulluser);
    })
});

function isLoggedIn(req, res, next) {
    if (req.isAuthenticated()) {
        next();
    } else {
        res.json(false);
    }
};

паспорта конфигурации.js

'facebookAuth' : {
        'clientID'      : 'secret',
        'clientSecret'  : 'secret',
        'callbackURL'   : 'http://localhost:3000/auth/facebook/callback'
    },

поэтому в моем приложении Angular2 я могу перейти к http://localhost:3000/auth/facebook, быть перенаправлены на FB страница входа и если успех перенаправлен на http://localhost:3000/auth/login/callback что приводит меня к http://localhost:8000/.

и в моем приложении Angular2, которое работает на порту 8000

getUser(){
    this.http.get('http://localhost:3000/auth/userdata')
    .map(res => return res.json())
}

каждый раз getUser() вызывается, он возвращает "false". Есть ли простой и безопасный способ "ввести" данные этого сеанса в мой интерфейс на другом порту? Также, когда я иду http://localhost:3000/auth/userdata в браузере я вижу этот профиль, отображаемый как JSON.

когда я устанавливаю backend и frontend на том же порту, он работает, facebook, twitter, google, местные, все в порядке и getUser возвращает полный профиль пользователя.

надеюсь, все ясно.

1 ответов


Это была проблема с запросами в Angular2. Я добавил учетные данные к каждому запросу:

getUser(){
    this.http.get('http://localhost:3000/auth/userdata', {withCredentials: true})
    .map(res => return res.json())
}

и теперь все в порядке.