2017-08-19 3 views
0

Je prévois installer Google Sign-In en utilisant Node JS, Express JS et Passport JS. Dans ce processus, j'ai configuré la stratégie de Google en utilisant les informations d'identification de l'application, créé un exemple de page avec un bouton de connexion et j'ai pu me connecter et récupérer le profil de l'utilisateur. Plus tard, je l'ai supprimé la page de l'échantillon et essayé de placer tous les angulaires 4 fichiers (construit en utilisant-cli angulaire) statiques dans le répertoire Public et a écrit la logique suivante,Comment sécuriser les routes Angular 4 en utilisant Passport JS?

app.use(express.static(path.join(__dirname, 'public'))); 
app.get('/', function(req, res, next) { 
    if (req.isAuthenticated()) { 
    res.redirect("/home");; // Angular route 
    } else { 
    // require the user to log in 
    // redirects to Google Sign-in page 
    res.redirect("/auth/google"); 
    } 
}); 

Maintenant, quand je lance le serveur et visite http://localhost:3000, je ne vois aucune redirection vers la page de connexion Google, à la place le navigateur affiche directement http://localhost:3000/home. Donc, quelles modifications dois-je faire pour authentifier l'utilisateur et rediriger l'utilisateur vers la page d'accueil? Et également sécuriser les autres routes/routes enfant dans l'application?

Répondre

1

Vérifiez if demande a une session, la manière simple ...

app.get('/home', function(req, res) { 
if(req.session){ //session exists (requesting user has a session) 
    // Angular route code goes here to prevent non-authed user access 
}else{res.redirect("/");} //or res.redirect("/auth/google"); 
}); 

... ou utiliser un module comme connect-ensure-login

Assurez-vous d'authentification

app.get('/home', 
    ensureLoggedIn('/auth/google'), 
    function(req, res) { 
    // Angular route code goes here to prevent non-authed user access 
    }); 

Si l'utilisateur n'est pas authentifié, la demande sera redirigée ed à /auth/google et l'URL de demande d'origine (/home) sera enregistrée dans la session à l'adresse req.session.returnTo.