2016-12-23 3 views
1

Ich verwende die Route, um zu überprüfen, ob ein Token gültig ist oder nicht. Wenn nicht, leite ich den Benutzer zur Anmeldeseite weiter. Ich möchte die Benutzer wissen lassen, dass sie entweder als Alarm oder über die Seite ausgeloggt sind.Kann ich den Benutzer vor der Route/Middleware warnen?

Was passiert, ist ein Benutzer klickt auf Link A (sie auf eine andere Seite auf der Website zu nehmen), die Route ruft eine validate.js Datei:

route.js

var checkToken = require('../validate.js'); 

router.use(checkToken.checkToken); 

Das ruft dann die validate.js-Datei auf, die einen HTTP-Aufruf vornimmt, um zu prüfen, wenn das Token gültig ist, wenn es nicht ist, leitet es den Benutzer um zur Login- Seite:

validate.js

var checkToken = function(req, res, next) { 
if (config.enableTokenValidation) { 

var usersToken = req.user.token; 

validateToken(receivedToken, req.requestId, function(err, response, body) { 
    if (err || response.statusCode != 200) { 

    console.log("Error, token is not valid"); 
    res.redirect("/auth/logout/"); 
    } else { 

    return next(); 
    } 

}); 

Wie kann ich eine Nachricht an die loginView.js Datei senden, so dass ich den Fehler im Frontend angezeigt werden kann (oder eine E-Mail Benachrichtigung) Da dies jedoch in der Middleware geschieht und es andere Routen zu anderen Seiten innerhalb des Programms gibt, die die Validierungsprüfung auslösen, führt die Anmeldeseite keine Überprüfung durch, und daher kann ich die Antwort dort nicht erhalten, um den Benutzer zu warnen.

Wenn es irgendeinen Weg gibt, dies auf die Art und Weise zu erreichen, wie ich es mache, oder gibt es andere Möglichkeiten, wie ich das angehen kann?

Vielen Dank

Antwort

0

Statt tun

res.redirect(); 

Warum Sie keine Fehlermeldung wie

res.status('401').send({error:'Invalid Token'}); 

senden Dann können Sie die notwendigen Schritte in der errorhandler nehmen() des api Anrufs.

0

Sie können ein Objekt zurückgeben, das eine Methode enthält, die eine Warnmeldung auslöst (oder eine Änderung in Ihrem HTML, wenn Sie die Ansicht ändern möchten). Dann verwenden Sie IhreObject.method aus dem Frontend.

Verwandte Themen