Ergebnis 1 bis 5 von 5
  1. #1
    rockie667 ist offline Grünschnabel
    registriert
    09-09-2016
    Beiträge
    2

    express + passport: Wie kann ich auf eingeloggt und Adminrechte prüfen?

    Hallo erstmal,

    bin zum ersten mal hier - arbeite auch grad an meinem ersten JS-Projekt... und hab prompt das erste Problem.

    Ich möchte zwei Variablen definieren (isLoggedIn und isAdmin), die ich im Frontend verwenden kann. Ich hab in der app.js folgendes gemacht:

    Code:
    app.use(function (req, res, next) {
      res.locals.isAdmin = false;
      res.locals.isLoggedIn = false;
      if(req.isAuthenticated()) {
        res.locals.isLoggedIn = true;
        isAdmin(req, res, next);
      } else {
        next();
      }
    });
    und

    Code:
    function isAdmin(req, res, next) {
      User.findById(req.user._id, function(err, user) {
        if (err) throw err;
        if (user.isAdmin) {
          res.locals.isAdmin = true;
        }
        next();
      });
    }
    Was passiert ist, dass die Startseite aufgerufen werden kann - also alles gut. Aber bei allen anderen Pfaden passiert erst nichts und irgendwann kommt die Meldung, dass vom Server keine Daten zurückkommen!

    Kann mir bitte irgendjemand helfen und mir sagen, wo mein Fehler ist?

    Ganz herzlichen Dank schon mal im Voraus!
    Hans

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: express + passport: Wie kann ich auf eingeloggt und Adminrechte prüfen?

    Was macht denn die Funktion User.findById? Wann wirft die einen Fehler? Was passiert, wenn req.user nicht gesetzt ist? Was, wenn der Benutzer nicht gefunden werden kann?
    Wie authentifizierst du genau? Mit Auth-Basic?
    Wird etwas in die Console geschrieben?

    Fragen über Fragen...

  3. #3
    rockie667 ist offline Grünschnabel
    registriert
    09-09-2016
    Beiträge
    2

    AW: express + passport: Wie kann ich auf eingeloggt und Adminrechte prüfen?

    Also, ich versuch das mal auseinanderzudröseln:

    - Ich verwende mongoose, findById ist eine mongoose-Funktion
    - die Funktion isAdmin wird ja nur aufgerufen, wenn der User angemeldet ist, und deshalb von passport ja die userdaten in der session gespeichert sind - in isAdmin ist req.user also auf jeden Fall nicht leer.
    - Das Problem, was passiert, wenn der Benutzer nicht gefunden werden kann, hab ich auf später geschoben, da ich glaub, dass das mit dem aktuellen Problem nichts zu tun hat.
    - Authentifiziert wird ja via PassportJS über eine local strategy - oder wie soll ich Deine Frage verstehen? Das Authentifizieren klappt ja soweit alles...
    - Der Client meldet irgendwann einen empty response Fehler und der server sagt gar nix. Gibt nur eine Meldung über den angefragten Pfad, das wars:
    15:02:59 web.1 | GET /wellnessangebote - - ms - -

    Kann es sein, dass ich in irgendein Asynchronitätsproblem laufe? Überspringt express einfach asynchron die if-else-Abfrage und läuft dann in einen hängenden Request (wie es in der expressjs doku genannt wird - zumindest so ähnlich)?

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: express + passport: Wie kann ich auf eingeloggt und Adminrechte prüfen?

    Lass dir doch mal über console.log() an mehreren Stellen im Code einfach mal Statusmeldungen ausgeben. Dann weißt du, was da genau beim Server passiert und ab wenn er nicht mehr dort ist, wo du denkst, dass er ist.

  5. #5
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    19-12-2013
    Beiträge
    872

    AW: express + passport: Wie kann ich auf eingeloggt und Adminrechte prüfen?

    Hm ist zwar schon ein par tage alt, hoffe das wird keine Betragsleiche.

    Zitat Zitat von rockie667
    die ich im Frontend verwenden kann.
    Ein Login mit Frontend und backend handelt man normalerweise über session's.

    Zitat Zitat von rockie667
    Authentifiziert wird ja via PassportJS
    Mit PassportJS bin ich nie klar gekommen, habe mir meine eigene Authentifizierung geschrieben.
    Mit sha1 Verschlüsslung.


    Zitat Zitat von rockie667
    Der Client meldet irgendwann einen empty response Fehler
    Ganz klassisch, es wird der Request, Response kreis nicht bis zu ende ausgeführt.

    Wenn über die aktuelle Middlewarefunktion der Anforderung/Antwort-Zyklus nicht beendet werden kann, muss next() aufgerufen werden, um die Steuerung an die nächste Middlewarefunktion zu übergeben. Andernfalls geht die Anforderung in den Status “Blockiert” über.
    Express-Middleware verwenden


    Habe mal gelesen das man Anwendung so schreiben soll das man ohne next() auskommt.
    Ich hab jedenfalls noch nie next verwendet.

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 24-11-2009, 10:47
  2. Antworten: 2
    Letzter Beitrag: 20-11-2009, 08:41
  3. Adminrechte bei PHPmyAdmin
    Von brainshock im Forum Serverseitige Programmierung
    Antworten: 3
    Letzter Beitrag: 07-02-2003, 08:01
  4. wie kann ich verfügbarkeit prüfen?
    Von punster im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 18-01-2002, 21:05
  5. Eingeloggt um 12.45:45
    Von V.I.P im Forum Serverseitige Programmierung
    Antworten: 3
    Letzter Beitrag: 27-06-2001, 14:26

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •