Dies ist meine erste Express-App. Ich versuche, die Authentifizierung für einige Routen zu implementieren. Im Idealfall werden Benutzer, wenn sie nicht authentifiziert sind, auf die Homepage weitergeleitet. Also schrieb ich diese Middleware:Umleiten zu nicht authentifizierten Benutzer mit Express-JWT
var jwt = require('express-jwt');
app.get('/protected',
jwt({secret: 'shhhhhhared-secret'}), //express-jwt middleware
function(req, res, next) { //redirection middleware
if(!req.user._id){
console.log('authentication failed')
res.redirect('/home')
}else{
next()
};
});
Wenn der Benutzer angemeldet ist, funktioniert der Code. Wenn der Benutzer jedoch nicht angemeldet ist, zeigt der Browser einfach einen nicht autorisierten 401-Fehler an. Es gibt keine Umleitung. Der Prozess ist bei der Express-JWT-Middleware fehlgeschlagen und hat nicht weiter zu meiner Umleitungs-Middleware geführt.
Gibt es eine Konfiguration, die ich innerhalb der JWT-Funktion einstellen muss? Oder gibt es eine Möglichkeit, eine globale Umleitung festzulegen, wenn 401 gefunden wird.
Sollte dieser Code vor der Authentifizierung Middleware oder nach? – Sydney
Diese Middleware sollte die letzte sein. Vergiss nicht, andere Fehler in if else zu behandeln. Sie können SMS oder E-Mail mit Fehlerbeschreibung senden oder einfach in der Datenbank speichern. –