Passport.js optionale Authentifizierung

9

Gibt es eine optionale Authentifizierungs-Middleware von Passport.js?

Sagen wir, ich habe eine Route, /api/users . Ich möchte der Öffentlichkeit nur eine Liste von Benutzern geben, aber für authentifizierte Personen möchte ich weitere Felder hinzufügen.

Zur Zeit habe ich nur eine dumme benutzerdefinierte Methode, die das gleiche tut, aber ich frage mich, ob:

  • Passport.js bietet bereits solche Dinge an oder
  • wie kann ich dies zu einem Teil des Reisepasses machen, wie ein Plugin oder so.

Meine Methode sieht ungefähr wie

aus %Vor%

Dies erscheint mir jedoch dumm, und auch nicht in Pass-Auth-Strategien.js oder einer anderen Auth-Schicht, wo ich denke, dass es sein sollte. Was ist der bessere Weg, es zu tun?

Bonuspunkte, um mir zu sagen, ob ich das Richtige mache, wenn ich 401 zurückgebe, wenn ich ein Token finde, das aber ungültig ist:)

    
Zlatko 12.09.2014, 10:36
quelle

2 Antworten

10

Hier ist ein einfaches PoC:

%Vor%

Es ruft passport.authenticate 'manuell' im Endpunkt /api auf. Auf diese Weise haben Sie mehr Kontrolle über den Umgang mit Authentifizierungsfehlern (die in Ihrer Situation nicht als Fehler behandelt werden sollten, sondern als eine Möglichkeit, die Ausgabe einzuschränken).

Hier ist die Ausgabe ohne ordnungsgemäße Authentifizierung:

%Vor%

Und hier ist mit:

%Vor%

Zur Verwendung als Middleware:

%Vor%     
robertklep 14.09.2014, 10:51
quelle
7

Könnte jetzt schon zu spät sein, aber es gibt eine anonymous Passport-Strategie, um genau dies zu ermöglichen. Auf diese Weise können die öffentlichen Routen entweder eine Authentifizierung durchführen oder nicht, aber wenn dies der Fall ist, haben Sie immer noch alle Informationen, die dem authentifizierten Benutzer zugeordnet sind. Schau es dir hier an: Ссылка

    
Ian Storm Taylor 19.05.2016 19:07
quelle