Czytam passport.js
informacje i próbki przez dwa dni, ale nie jestem pewien, czy później wykonałem cały proces uwierzytelniania.
Skąd mam wiedzieć, czy jestem zalogowany, na przykład mam pasek nawigacyjny z przyciskiem logowania lub wylogowania, czy jest jakaś zmienna, taka jak kod poniżej?
if (login)
<button>logout</button>
else
<button>login</button>
node.js
express
passport.js
RMontes13
źródło
źródło
app.get
,app.post
itd. Jeśli potrzebujesz inną funkcjonalność, to należy wyjaśnić szczegółowo w swoim pytaniu, jak również to, co staramy się osiągnąć.Jeśli chcesz użyć go w swoich szablonach, ponieważ przykładowy kod wydaje się wskazywać, możesz utworzyć oprogramowanie pośredniczące, takie jak to:
Umieść ten kod gdzieś po skonfigurowaniu paszportu.
A następnie użyj go w swoim szablonie (przykład swig)
źródło
app.use(function(req,res,next){
res.locals.login = req.isAuthenticated();
res.locals.user = req.user;
next();
});
isAuthenticated
daje false w następnym żądaniu. Czy mógłbyś pomóc odpowiedzieć na to pytanie stackoverflow.com/questions/42842171/…Nie jest to wyraźnie udokumentowane, ale nie jest to
isAuthenticated()
sposób, który jest wkładanyreq
przez paszportu .Może być używany w następujący sposób,
źródło
Szukałem takiego rozwiązania i trafiłem na tę stronę. Pytanie brzmi, jak sprawdzić status logowania po stronie klienta.
Po zalogowaniu ukrywam przycisk Zaloguj i pokazuję przycisk wylogowania. Po odświeżeniu strony ponownie widzę przycisk logowania zamiast przycisku wylogowania. Jedynym rozwiązaniem jest zapisanie elementu w sessionStorage, jeśli używasz sesji (i localStorage, jeśli używasz JWT). Usuń ten element po wylogowaniu. Następnie przy każdym ładowaniu strony sprawdź ten element sessionStorage i wykonaj odpowiednie czynności.
źródło
użyj poniższego kodu wewnątrz app.get () lub router.get ()
źródło
Dobre pytanie, miałem pewne problemy podczas próby zaimplementowania czegoś takiego, gdy pojawia się nieuwierzytelnione żądanie, kierownica pomija blok if, jeśli zmienna res.locals zwraca fałszywą wartość. Aby rozwiązać ten problem, musisz skonfigurować oprogramowanie pośredniczące w pliku app.js, aby req.user był dostępny globalnie w Twojej aplikacji.
});
W pliku nagłówkowym możesz sprawdzić, czy użytkownik jest uwierzytelniony i wyświetlić zgodnie z zawartością, taką jak ta.
źródło