Umleiten zur vorherigen Seite nach der Authentifizierung in node.js mithilfe von pass.js

Ich bin versucht, einen login-Mechanismus mit node.js -, express-und passport.js. Der Login selbst funktioniert ganz nett, auch sessions gespeichert sind schön mit redis aber ich habe einige Probleme mit der Umleitung der Nutzer zu, wo er begann aus, bevor Sie aufgefordert, sich zu authentifizieren.

z.B. der Benutzer folgt link http://localhost:3000/hidden wird dann umgeleitet http://localhost:3000/login aber dann will ich ihn umgeleitet zu werden wieder zurück zu http://localhost:3000/hidden.

Der Zweck von diesem ist, wenn der Benutzer Zugriff zufällig eine Seite muss er angemeldet sein erste, soll er umgeleitet werden, um den /login-Seite unter Angabe seiner Zugangsdaten und dann umgeleitet wird, zurück zu der Stelle, die er zuvor versucht, Zugriff auf.

Hier ist meine login-post

app.post('/login', function (req, res, next) {
    passport.authenticate('local', function (err, user, info) {
        if (err) {
            return next(err)
        } else if (!user) { 
            console.log('message: ' + info.message);
            return res.redirect('/login') 
        } else {
            req.logIn(user, function (err) {
                if (err) {
                    return next(err);
                }
                return next(); //<-? Is this line right?
            });
        }
    })(req, res, next);
});

und hier meine ensureAuthenticated Methode

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

denen die Haken in die /hidden Seite

app.get('/hidden', ensureAuthenticated, function(req, res){
    res.render('hidden', { title: 'hidden page' });
});

Die html-Ausgabe für die login-Seite ist ganz einfach

<form method="post" action="/login">

  <div id="username">
    <label>Username:</label>
    <input type="text" value="bob" name="username">
  </div>

  <div id="password">
    <label>Password:</label>
    <input type="password" value="secret" name="password">
  </div>

  <div id="info"></div>
    <div id="submit">
    <input type="submit" value="submit">
  </div>

</form>

InformationsquelleAutor der Frage Alx | 2012-11-11

Schreibe einen Kommentar