Jaki jest najlepszy sposób przesyłania informacji o sesji paszportowej z zaplecza do interfejsu?Dane sesji paszportowej JS w Angular2
Moja aplikacja działająca na porcie 3000. Pierwsze dwa pobrania służą do logowania na facebooku i przekierowania. Kolejny to, aby uzyskać dane z bazy danych użytkownika (ID użytkownika powinno być przechowywane w req.user
)
routes.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);
}
};
paszport config.js
'facebookAuth' : {
'clientID' : 'secret',
'clientSecret' : 'secret',
'callbackURL' : 'http://localhost:3000/auth/facebook/callback'
},
Tak w mojej aplikacji Angular2 Mogę przejść do http://localhost:3000/auth/facebook
, zostać przekierowany na stronę logowania FB, a jeśli sukces zostanie przekierowany do http://localhost:3000/auth/login/callback
, który zabierze mnie do http://localhost:8000/
.
A w mojej aplikacji Angular2 który działa na porcie 8000
getUser(){
this.http.get('http://localhost:3000/auth/userdata')
.map(res => return res.json())
}
Everytime getUser()
nazywa, zwraca 'false'. Czy istnieje prosty i bezpieczny sposób "wstrzyknięcia" danych sesji do mojego interfejsu na innym porcie? Również gdy przeglądam w przeglądarce http://localhost:3000/auth/userdata
, widzę ten profil jako JSON.
Kiedy ustawiam backend i frontend na tym samym porcie To działa, facebook, twitter, google, local, wszystko jest w porządku i getUser
zwraca pełny profil użytkownika.
Mam nadzieję, że to jasne.
dlaczego nie podasz swojej aplikacji angular2 na porcie '3000'? –
Chciałbym, aby nakładka na końcu kończyła się na osobnych hostach. – dmh126
Proponuję uruchomić wszystko na tym samym porcie. Możesz mieć dwa serwery na różnych portach, ale proxy jeden z nich do drugiego za pomocą [express-http-proxy] (https://www.npmjs.com/package/express-http-proxy). –