2016-07-24 10 views
1

Ich erstelle eine Back-End-App mit expressJs und Passportjs (lokale Strategie), um einige der Routen zu sichern. Ich muss die Informationen für den aktuellen Benutzer bei jeder Datenbankabfrage hinzufügen, so dass wir nur die relevanten Informationen für jeden Benutzer verfügbar machen. Ich weiß, dass Sie auf die Informationen für aktuelle Benutzer zugreifen können, die req.user überprüfen, aber das beinhaltet die Übergabe der Benutzerinformationen (oder sogar der Anfrage) als Parameter über alle meine Call-Stacks, und ich fand es ein bisschen unbequem.Zugriff auf den aktuellen Benutzer auf ExpressJs - Passport

Gibt es die Benutzerinformationen auf der letzten Schicht (die die SQL-Anweisung vorbereitet), ohne sie auf die Parameter zu setzen ?.

Danke.

Antwort

1

Warum erhalten Sie nicht die Benutzerinformationen auf der letzten Ebene von id? Da Sie den Pass-Local verwenden, können Sie einen Benutzer anhand der ID in der letzten Datenbankabfrage abfragen, indem Sie auf req.user.id zugreifen. Kein Parameter ist erforderlich.

router.post('/your/route', function(req, res) { 
    User.findOne({ 
    where: {id: req.user.id} 
    }).then(function(user) { 
    // do something 
    }); 
//send response 
}); 
+0

Vielen Dank für Ihre Antwort. Auf diese Weise muss ich noch die userId übergeben, um die DB abzufragen. Ich versuche zu vermeiden, zusätzliche Parameter zu allen Methoden hinzuzufügen. – Sole

1

können Sie auf Pass Pass done Funktion als zweiter Parameter das Benutzerobjekt mit Ihren kundenspezifischen Daten, wie folgt aus:

done(null, {id: 1, name: 'John'}); 

und die req.user kehrt {id: 1, name: 'John'}

Verwandte Themen