2017-09-16 5 views
0

Je pense que je rencontre un problème en passant une session de mon backend Node à mon frontend React, mais je suis en quelque sorte un je ne sais pas ce que je ne connais pas la situation . Quelqu'un peut-il aider?Authentification entre le frontend React et le backend du nœud

est ici la question:

J'ai cette route sur le back-end ..

app.get('/account', ensureAuthenticated, function(req, res){ 
res.status(200).json({ user: req.user }); 
}); 

qui recrache JSON userdata sur une authentification réussie Passport Steam. Je peux vérifier cela fonctionne lorsque je consulte la page du compte générée par les vues EJS.

Sur le serveur React, j'ai une page racine avec un lien vers l'autorisation Steam. Il passe avec succès à Steam, puis redirige vers la page racine. Lorsque j'essaie de faire une récupération JSON de '/ compte' depuis la page racine Réagir, la réponse n'est plus JSON, mais le code HTML du modèle '/ compte' du backend, mais j'ai besoin de JSON bien sûr.

Je pense qu'il ne me reconnaît pas comme authentifié, car j'obtiens la même réponse HTML lors d'une requête GET utilisant l'extension client Advanced REST de Chrome. Je devrais également noter que je suis mandatant le serveur d'API par l'intermédiaire de la fonction de proxy de Create React App.

MISE À JOUR: Problème résolu.

fetch('https://example.com:1234/users', { credentials: 'include' })

Répondre

0

Il semble que le problème peut être dû à l'ordre de app.get appels, ou la configuration de votre serveur de nœud - probablement les modèles EJS.

Je chercherais où vous faites quelque chose comme app.set('view engine', 'ejs'); et où vous faites app.get('/account'....

Vous voulez faire la app.get('/account'..avant vous app.set('view engine...

Si vous frappez réellement la route /account vous devriez obtenir soit un 401 ou la réponse JSON, pas HTML (EJS).

+0

Turns out 'req.isAuthenticated()' est faux retour à l'intérieur de cette fonction, je fais appel à la route: 'fonction ensureAuthenticated (req, res, à côté) { if (req.isAuthenticated()) { retour suivant(); } res.redirect ('/'); } ' La réponse est que le code HTML est routé vers la racine à partir de cette fonction. Si je dis à EnsureAuthenticated de revenir juste après(), il crachera au moins du JSON sur une route de test. Je ne sais pas où aller à partir d'ici. –