Wie kann ich einen API-Endpunkt mit PassportJS schützen?

7

Meine App verwendet Express und AngularJS. Ich verwende Express, um grundlegende Web-Seving des Winkelcodes über statische zu behandeln. Der eckige Code verwendet Dienste, die auf von express gehostete API-Endpunkte treffen. Ich möchte nur, dass die API-Endpunkte zugänglich sind, nachdem sich ein Benutzer authentifiziert hat. Wie kann ich dies über PassportJS erreichen?

    
Shamoon 15.11.2013, 11:35
quelle

4 Antworten

17

Ich habe ein Angular-Express Projekt auf Github hochgeladen, an dem ich gearbeitet habe.

Es ist noch in Arbeit. Ich hoffe es hilft.

Es verwendet PassportJs für die Benutzerauthentifizierung und ist ein grundlegendes Beispiel für die serverseitige Autorisierung. Es zeigt, wie API-Aufrufe nur für authentifizierte Benutzer oder nur für Benutzer mit Administratorrolle zugänglich gemacht werden. Dies wird in server/routes.js erreicht, indem die Middleware-Funktionen ensureAuthenticated und ensureAdmin aufgerufen werden, die in server/authentication.js

definiert sind

in routes.js

%Vor%

in authentication.js

%Vor%     
klode 24.11.2013, 01:41
quelle
2

Ich benutze noch keine Pass-Passwörter, aber ich habe gerade das selbe gemacht, was Sie tun wollen. Hier ist meine Beispielkonfiguration:

%Vor%

Hier habe ich eine Menge Code von: Ссылка , Ссылка

Hoffe, das hilft!

#

BEARBEITEN

#

Ich habe vergessen zu erwähnen, dass ich für die eckige Seite nur ein einfaches Formular habe, das die Werte für Benutzer und Passwort an den Endpunkt des Login-Posts zurückschickt, da der getEndpoint eingeschränkt ist und die Express-App den Rest der Authentifizierung und Beschränkung übernimmt Seite der Dinge für dich. Wenn ich Ihnen weiterhelfen kann, zögern Sie bitte nicht zu fragen.

    
David Swindells 21.11.2013 09:59
quelle
1

Ich habe vor einiger Zeit einen Link zu dem Thema gefunden, der Ihnen vielleicht weiterhelfen kann. Es verwendet PassportJS nicht (und ich bin nicht so vertraut mit ihm, wie ich gerne wäre), aber Sie können sich über Express authentifizieren, das Sie bereits verwenden.

Scrollen Sie nach unten zum Abschnitt (der letzte im Artikel) zur Einzelrouten-Authentifizierung. Ich fand das Beispiel sehr geradlinig und ich glaube, dass Sie diese Methode (oder PassportJS) verwenden können, um die Route zu Ihrer API zu authentifizieren.

Link: NODE.JS UND EXPRESS - BASIS-AUTHENTIFIZIERUNG

Wenn Sie dies in PassportJS herausfinden, schreiben Sie bitte Ihre Ergebnisse zurück; Ich würde es gerne sehen. (Das ist auch der Grund, warum ich Ihre Frage abgestimmt habe).

    
Eric McCormick 21.11.2013 15:28
quelle
0

Ich kenne zwei Lösungen

angular-client-side-auth und eckig-http-auth

Sie finden es bei github

    
vinnitu 15.11.2013 12:40
quelle

Tags und Links