Ich habe eine einfache Webanwendung mit einem Anmeldebildschirm und einer Aktivitätenseite, auf die nur zugegriffen werden kann, wenn der Benutzer gültige Anmeldeinformationen eingegeben hat. Angenommen, der Benutzer klickt auf die Anmeldung mit gültigen Anmeldeinformationen und wird auf die Aktivitätenseite umgeleitet. Nun klickt der Benutzer nicht auf Abmelden, sondern er klickt einfach auf die Zurück-Schaltfläche des Browsers und kehrt zur Anmeldeseite zurück. Dieses Verhalten ist offensichtlich nicht intuitiv, würde ich annehmen, während der Benutzer eingeloggt ist und er/sie klickt auf die Zurück-Taste, um auf der gleichen Seite zu bleiben und nicht auf die Login-Seite zurückzukehren.Der Benutzer klickt auf die Zurück-Schaltfläche, während die Sitzung noch authentifiziert und auf die Anmeldeseite in node.js umgeleitet wird.
function loginUser(req, res) {
if (req.session.auth) // if user is still authenticated
{
res.redirect('/activity');
}
res.render('login');
}
Dies ist eine einfache Weise, die ich zur Zeit verwenden, um den Benutzer immer auf die Aktivität Seite umleiten zurück, jedoch finde ich diese eine Ressource verschwenderische Methode, da es unerwünschte Umleitungen eingeführt. Meine Frage ist, ist dies der Standard und sauberste Weg, um das oben genannte Verhalten zu implementieren, oder gibt es einen besseren Mechanismus? Ich benutze Pass für die Authentifizierung und Speicherung von JWT-Tokens.
EDIT: Die obige Lösung funktioniert nur, wenn der Browser No-Cache aktiviert ist, im Gegensatz dazu wird der Controller für die Login-Route nicht einmal aufgerufen, da der Browser die Seite zwischengespeichert hat. Ich suche etwas robusteres. Ich halte es nicht für eine gute Methode, den Browser so zu programmieren, dass die Seite nicht in einer Produktionsumgebung zwischengespeichert wird.
Sie können den Browser nicht steuern oder seine Geschichte aus offensichtlichen Sicherheitsgründen ändern, so dass Sie ziemlich fertig sind. Die einzige Sache, die möglicherweise fehlt, ist sicherzustellen, dass Ihr Code überprüft, ob der Benutzer jedes Mal angemeldet ist oder nicht, so dass Sie sicherstellen müssen, dass die Anmeldeseite nicht vom Browser zwischengespeichert werden kann. – HiDeo
Sie könnten JWT in Betracht ziehen. Siehe die Satellizer-Bibliothek auf github. –