2017-08-10 1 views
-1

Also ich benutze https://www.npmjs.com/package/basic-auth und alles funktioniert wie es ist, aber ich kann nicht herausfinden, wie für das Leben von mir!NodeJS Basic Auth - Wo wird es im Frontend gespeichert?

Meine Einrichtung ist einfach, wenn Sie authentifizieren Sie sind Admin, sonst sind Sie nicht. Was ich versuche zu tun ist eine bestimmte Navigationsleiste am Frontend basierend darauf, ob der Benutzer Admin ist nicht.

NodeJS Middleware-Code:

exports.login = function (req, res, next) { 
console.log(req.header); 

function unauthorized(res) { 
    res.set('WWW-Authenticate', 'Basic realm=Authorization Required'); 
    return res.sendStatus(401); 
}; 

    var user = basicAuth(req); 

    if (!user || !user.name || !user.pass) { 
    return unauthorized(res); 
    }; 

    if (user.name === 'Admin' && user.pass === 'myPassword') { 

    return next(); 
    } else { 
    return unauthorized(res); 
    }; 
}; 

Ive lokalen Speicher überprüft, Kekse, alles, was ich denken kann, aber einmal in der Grund Auth erscheint auf magische Weise in den Header automatisch protokolliert. Wenn ich mich mit falschen Zugangsdaten anmelden möchte, wird ein nicht autorisiertes Objekt zurückgegeben und am Frontend angemeldet, aber wenn ich mich richtig authentifiziere, gibt es kein Objekt, das ich sehen kann.

Jede Hilfe wird sehr geschätzt. Wenn Sie zusätzlichen Code benötigen, bitte lassen Sie es mich wissen!

Vielen Dank!

Antwort

0

Nach Ihrem Code, wenn (!user || !user.name || !user.pass) dann Sie return unauthorized(res); die unauthorised Funktion ist früher definiert und das ist verantwortlich für das Senden der Status und Header zurück zum Frontend.

Aber im Fall einer erfolgreichen Anmeldung (user.name === 'Admin' && user.pass === 'myPassword') haben Sie nur return next() die nächste Funktion bewegt sich auf die nächste Middleware in Ihrem Code.

Um das zu erreichen, was Sie wollen, sollten Sie tatsächlich etwas mit dem vorderen Ende zurück:

if (user.name === 'Admin' && user.pass === 'myPassword') { 
res.end('Access granted'); 
}