Ho un'app AngularJS a pagina singola, che funziona con Express, node.js e MongoDB tramite Mongoose. Utilizzo di Passport per la gestione/autenticazione degli utenti.AngularJS - mostra/nascondi gli oggetti nav se l'utente è connesso
Mi piacerebbe che gli elementi della barra di navigazione cambino in base al fatto che un utente abbia effettuato l'accesso o meno. Sto avendo difficoltà a capire come implementarlo.
faccio a sapere se un utente è connesso tramite una http
richiesta:
server.js
app.get('/checklogin',function(req,res){
if (req.user)
res.send(true);
else
res.send(false);
Sul front-end, ho un NavController
chiamare questo utilizzando il servizio di angolare $http
:
NavController.js
0.123.Nel mio nav, sto usando ng-show
e ng-hide
per determinare quali selezioni dovrebbero essere visibili. Sto anche attivando la funzione isLoggedIn()
quando l'utente fa clic sugli oggetti nav, controllando se l'utente ha effettuato l'accesso durante ciascun clic.
index.html
<nav class="navbar navbar-inverse" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" href="/">Home</a>
</div>
<ul class="nav navbar-nav">
<li ng-hide="loggedIn" ng-click="isLoggedIn()">
<a href="/login">Login</a>
</li>
<li ng-hide="loggedIn" ng-click="isLoggedIn()">
<a href="/signup">Sign up</a>
</li>
<li ng-show="loggedIn" ng-click="logOut(); isLoggedIn()">
<a href="#">Log out</a>
</li>
</ul>
</nav>
Problema
Ci sono altri posti nella mia app in cui l'utente può accedere in/out, al di fuori del campo di applicazione della NavController. Ad esempio, c'è un pulsante di accesso nella pagina di accesso, che corrisponde al LoginController. Immagino che ci sia un modo migliore per implementarlo su tutta la mia app.
Come posso "guardare" se req.user
è true
sul back-end e i miei elementi di navigazione rispondono di conseguenza?
rootScope ... Perché non l'ho visto prima? GRAZIE! – Moody