Aktywne Wpisy
![szynszyla2018](https://wykop.pl/cdn/c3397992/szynszyla2018_jH0stHKEtQ,q60.jpg)
szynszyla2018 +44
Tak do mnie właśnie doszło. Teraz politycy chcą zrezygnować z prac domowych dla kaszojadow w podbaza. Czyli kaszojady w wieku 13 lat będą kończyć szkołę nie nauczone pracy nad sobą z brakami w nauce. Równocześnie od lat otwiera się mnóstwo szkół wyższych prywatnych gdzie wystarczy przelew i 30 % z matury teraz do tego dołączyły uczelnie medyczne kształcące lekarzy. Więc za 15 lat będzie mnie leczył lekarz co nie ogarniał matmy na
![howtobepro](https://wykop.pl/cdn/c3397992/howtobepro_MHy0EEQZnq,q60.jpg)
howtobepro +571
![howtobepro - U mnie już śnieg pada (。◕‿‿◕。)
#gry #nostalgia](https://wykop.pl/cdn/c3201142/bb1207ff0fe5f5c6be64ccc638e61c839f867c8700c4ede199f56cb969ae9d50,w150.jpg?author=howtobepro&auth=dd4bc3a0abfbf64856721ffb5adb6641)
Cześć,
Mam problem z przekazaniem obiektu do widoku. Do aplikacji można zalogować się „tradycyjnie” lub poprzez facebooka. Na następnej stronie ma ukazać się informacja ‘witaj xyz’ jesteś zalogowany. Pojawia się problem logując się za pomocą facebooka, ponieważ pomimo zapisania do sesji obiektu przy próbie jego przekazania do widoku pojawia się informacja req.user undefined. Taką samą informację miałem gdy logowałem się „tradycyjnie”. Okazało się jednak, że pomogła zmiana kolejności inicjalizacji modułów Express session oraz passport. Brakuje już mi pomysłów. Zamieszczam kod może ktoś znów zauważy złą kolejność czy jakiś błąd. Zastanawiam się jeszcze czy nie można tego inaczej rozwiązać np. zapisać so sesji req.session.user = user w momencie serializacji jednakże nie mamy tam req.
Kod:
serwer
route
dependencies:
"bcryptjs": "^2.3.0",
"body-parser": "~1.15.1",
"connect-ensure-login": "^0.1.1",
"connect-flash": "latest",
"cookie-parser": "~1.4.3",
"debug": "~2.2.0",
"express": "~4.13.4",
"express-session": "latest",
"express-validator": "latest",
"hbs": "~4.0.0",
"mongodb": "latest",
"mongoose": "latest",
"morgan": "~1.7.0",
"passport": "latest",
"passport-facebook": "latest",
"passport-local": "^1.0.0",
"serve-favicon": "~2.3.0"
route:130
return done(null, user); // user found, return that user
czy tutaj ten done() jest wykonywany? możesz sprawdzić jakimś console.logiem czy na pewno w momencie logowania ten kod jest wykonywany??
Druga sprawa czy serializeUser() jest wykonywane w momencie wykonania rządania po zalogowaniu się?
Kurcze.. ja akurat robiłem autoryzację przez Twitch.TV, ale miałem identyczny problem. Tylko najgorsze jest to że nie pamiętam dokładnie jak go rozwiązałem, ale wiem
Co do route 130 tak jest wykonywany.
Co do serializeUser tak jest wykonywany w momencie rządania po zalogowaniu.
Wszystko działa do momentu router.get(/lobby) wtedy nagle okazuje się, że req.user is undefined. Potwierdza to fakt, że gdy w serializeUser dodam obiekt user do listy obiektów a w router.get(/lobby) go sciągam i przekazuje do widoku to dostaje upragnione witaj xyz.
passport.authenticate('facebook', {scope: 'email'})
).
A w przypadku wykonywania serializeUser jesteś pewien że przekazujesz tam usera a nie null, undefined itp?
Zanurkuj w nodemodules/passport/strategies/session.js, tam jest w pewnym momencie
Komentarz usunięty przez autora
Chyba wiem dlaczego. W życiu bym na to nie wpadł. Mam serializację i deserializację zrobioną tylko dla jednejj kolekcji a używam dwóch. Nie znajdzie więc on id użytkownika z fb w tabeli dla zwykłego usera który rejestrował się poprzez stronę. Ale
Ps. nawet nie zdążyłem podziurawić modułów.
ps: w przypadku backendów warto zastanowić się nad użyciem webpacka i babela. ja osobiście projekty backendowe tworzę używając webpacka i babela w pełnym ES6. faktycznie męczące może być odpalanie webpack --watch przy tworzeniu projektu i deployu, ale async await robi robotę.
http://pastebin.com/WLz5Cpbi
I nagle JS przestaje być gówniany ( ͡° ͜ʖ ͡°)