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:
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:)
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% 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: Ссылка
Tags und Links javascript authentication node.js oauth-2.0 passport.js