2016-06-10 8 views
0

Alrigh, so habe ich einen vollständigen Pass lokale Genehmigung eingerichtet, funktioniert alles ziemlich perfekt, außer ich kann nicht scheinen, meinen Kopf um ein Problem mit pass.js zu wickeln.Passportjs extrahieren Benutzer von isAuthenticated Funktion

Ich autorisiere Benutzer durch Sitzungen (sie funktionieren gut), aber ich kann nicht scheinen, die Benutzerinformationen aus dieser Sitzung zu extrahieren, obwohl, wenn ich meine Sitzung db manuell überprüfen, für jede Sitzung gibt es eine Benutzer-ID (die Links an den Benutzer). Auch die Deserialize-Funktionen scheinen den Benutzer zurückzugeben, und das Protokoll zeigt den richtigen Benutzer an.

Jetzt ist das Problem, dass ich nicht scheinen kann, diesen Benutzer < -> Sitzungsinfo irgendwo in meinen Routen zu übergeben. Das Problem, das ich damit habe, ist, dass Leute, die eingeloggt sind, autorisiert sind, aber sie können mit der Anfrage Körper so viel tun, wie sie wollen, Dinge wie das Posten von Nachrichten in ihrem Namen tun, sie ausloggen, .. .

Beispiel-Code: in diesem Code

router.post('/games/:id/verify', isAuthenticated, function(req, res){ 
     log('@POST verify for game with id: ' + req.params.id); 
     gameController.postVerify(req.params.id, req, res); 
    }); 

, prüft es nur, wenn ein Benutzer angemeldet ist, wenn möglich, ich die Benutzer so zu dieser Sitzung lesen will angemeldet sind, dass er kann dieses Spiel nicht verifizieren, wenn er nicht dabei war.

Angenommen, Benutzer A, B waren Teil des Spiels und müssen es überprüfen. Diese Funktion ermöglicht es dem angemeldeten Benutzer C, nach ihnen zu suchen, da diese Funktion nur prüft, ob der Benutzer angemeldet ist.

Wenn ich den angemeldeten Benutzer (Benutzer C im Testfall) an den gameController übergeben kann, Ich kann dort meine eigenen Schecks schreiben und sie rauswerfen.

Antwort

0

Passport füllt req.user, wenn die Authentifizierung erfolgreich war. Es wird von den Daten ausgefüllt, die von deserializeUser zur Verfügung gestellt werden, was im Allgemeinen eine Datenbankaufzeichnung des Benutzers ist.

Sie können diese Informationen verwenden, um andere Datenbankabfragen/Prüfungen/etc einzuschränken, um sicherzustellen, dass der angemeldete Benutzer auf bestimmte Informationen zugreifen kann.

+0

Perfekte, klare und präzise Antwort. –

+0

dann markieren Sie es als beantwortet .. :) – refactor