2015-09-10 2 views
0

On dirait que d'autres personnes ont eu des problèmes similaires, mais la direction opposée ... Donc, en essayant de configurer l'authentification google, et mettre en place un appel au passeport sur "/ auth/google"Express et ngRouter, réception de l'appel au lieu du backend

app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email'] })); 

    // the callback after google has authenticated the user 
    app.get('/auth/google/callback', 
     passport.authenticate('google', { 
      successRedirect : '/internal', 
      failureRedirect : '/login', 
      failureFlash : true 
     })); 

Cela fonctionne, si je vais à 127.0.0.1/auth/google je reçois connexion Google.

J'ai ensuite créé un bouton pour demander à être connecté

<a href="/auth/google"><button type="button" class="btn btn-default btn-lg"> 
    <span class="glyphicon glyphicon-star" aria-hidden="true"></span> Login (Admin) 
</button></a> 

Ce bouton ne vous envoie à 127.0.0.1/auth/google~~V~~singular~~2nd, que le ngrouter prend comme autre (.otherwise({ redirectTo: "/" });)

Et C'est là que mon problème semble être. Appel direct au serveur et cela fonctionne, cependant, si je l'appelle via angulaire, le routeur le prend. Alors, comment puis-je forcer "angulaire" pour demander au serveur pour la page?

L'ensemble d'auth est défini comme app.get (comme dans l'exemple ci-dessus). Je ne suis pas certain si c'est parce que je ne les définis pas comme des routes express, elles sont sous un module.export à la place. Dans quel cas, existe-t-il un moyen de dire à Express de les récupérer et de les transmettre en interne ou similaire?

Répondre

0

Quelqu'un d'autre avait compris.

AngularJS HTML5 Routing Enabled : Passing URL Back to server?

I figured it out! :) La solution consiste à ajouter target = '_ self' à votre balise d'ancrage. Toutes les autres valeurs cibles fonctionnent aussi; "_blank", "_top" et ainsi de suite. J'ai testé cela dans IE 9, 10; Chrome 40-43, Opera 25-29 et Safari 5.1