2016-05-04 12 views
3

Ich verwende Fetch, um mit dem Node-Server (Express) zu kommunizieren. Ich baue ein SPA. Bei jeder Anfrage an den Server überprüfe ich, ob die Sitzung gültig ist oder nicht. Wenn die Sitzung nicht gültig ist, werde ich vom Knoten auf eine Anmeldeseite umgeleitet. Das Problem ist, dass. Wenn die Sitzung ungültig wird (z. B. get/post-Anforderung wird im Hintergrund ohne Seitenaktualisierung ausgeführt), schlägt die Anforderung automatisch fehl. Es wird nicht umgeleitet.So verwalten Sie eine Weiterleitungsanforderung nach einem Abrufaufruf

Ich hatte das gleiche Problem für die Ajax-Anfrage auch. Was ich getan habe, ist durch Überprüfen der Anfrage ist xhr und akzeptieren json. Dann sende eine JSON-Antwort und handle mit der Weiterleitung im Wedelende.

if (req.xhr && req.accepts('json')) { 
    res.json({status:'session_timeout'}); 
}else{ 
    res.redirect('/login'); 
} 

Wie kann ich das gleiche mit Fetch tun. Wie handle ich Umleitung mit Abruf und Knoten.

Antwort

0

Ich bin nicht sicher von Ihrem Code, wie Sie feststellen, ob eine Sitzung gültig ist. Es sieht so aus, als würden Sie testen, ob die Anfrage die ist, die Sie aus dem Browser senden, und wenn dies der Fall ist, dann antworten Sie mit dem JSON.

In diesem Fall wann würde die Weiterleitung jemals ausgelöst werden? Wenn Sie die Anfrage immer vom Browser senden, wird sie niemals zur Weiterleitungs-Anweisung weitergeleitet.

Haben Sie versucht, den Pass für die Benutzerauthentifizierung zu verwenden? Es ist leicht, Middleware einrichten, die Sie bei allen Endpunkten gehören können, so dass jede Anforderung, wenn der Benutzer umgeleitet werden würde immer noch nicht angemeldet war

zum Beispiel:.

function isLoggedIn(req, res, next) { 
    if (req.isAuthenticated()) 
     return next(); 
    res.redirect('/'); 
} 

Dann in Ihrem api :

app.get('/yourendpoint', isLoggedIn, function(req, res) { 
    /*response here*/ 
    }); 
}); 
Verwandte Themen