Verhindert den Zugriff auf Admin-Seiten in AngularJS

8

Ich frage mich, was der beste Ansatz in AngularJS ist, um Admin-Seiten zu sichern, d. h. Seiten, die normale Benutzer nicht sehen sollten. Offensichtlich gibt es eine Back-End-Authentifizierung, aber da die AngularJS-App clientseitig ist, könnten die Leute theoretisch immer noch das Routing betrachten und direkt zu diesen URLs gehen und sich die Admin-Seiten ansehen.

Ich benutze Express, PassportJS & amp; MongoDB (Mongoose) als mein Backend. Natürlich wären sie nicht in der Lage, mit den Admin-Seiten zu interagieren, da es eine serverseitige Authentifizierung bei der Erstellung, Löschung, ... gibt. Aber ich würde viel lieber nicht die Seiten dem Benutzer bereitstellen, wenn sie nicht die haben richtiger Zugang. Da die App jedoch vollständig clientseitig JS ist, denke ich, dass dies unmöglich ist, da Leute nur das Routing ändern können und was nicht. Was ist der beste Weg, dies zu tun? Danke für jede Eingabe!

    
thomastuts 22.09.2013, 12:22
quelle

6 Antworten

4

Ich würde einen check in routeProvider setzen. Dies muss für jede Route durchgeführt werden, die eine Authentifizierung erfordert. Sie können sogar eine separate Methode schreiben und sie an jede Route kleben, um Doppelungen zu vermeiden.

%Vor%     
codef0rmer 22.09.2013 14:12
quelle
2

Diese Frage ist ein bisschen alt, aber wenn jemand nach einer Lösung sucht, habe ich eine Ressource-Datei verwendet, um meine HTML-Templates zu speichern und dann mit Webapi zu laden, während ich die Berechtigung validiere und das HTML nur zurückgebe, wenn der Benutzer authentifiziert ist. p>     

codeman 12.05.2014 12:07
quelle
0

Warum würden Sie "viel lieber" nicht diese Seiten an Nicht-Admin-Benutzer liefern? Hast du einen wirklichen Grund, sich darum zu kümmern, abgesehen von einem Instinkt, dass du Leute davon abhalten solltest, Dinge zu sehen, die sie nicht "sehen" sollten?

Wenn Ihre Sicherheit ordnungsgemäß konfiguriert ist, können Benutzer ohne Administratorrechte nicht auf Administratordaten zugreifen oder Verwaltungsvorgänge ausführen. Darauf solltest du dich konzentrieren und nicht aufwändige Methoden entwickeln, um sie daran zu hindern, Admin-Bildschirme zu sehen, die sie sowieso nicht benutzen können. Jede Zeit, die du damit verbringst, ist im Grunde Zeitverschwendung und du solltest sie für wichtigere Dinge ausgeben.

    
Jon Rimmer 22.09.2013 13:59
quelle
0

Wie ich es tue, setze das angularJS html in die JSP-Seite und überprüfe die Sitzung. Wenn Sitzungsvalidierungen den Zugriff ermöglichen. Ich bin mir nicht sicher, ob das richtig ist. Ein anderer Weg ist, verwenden Sie JSP nicht, aber mit jedem API-Treffer, überprüfen Sie die Sitzung auf dem Server, sonst geben Sie false zurück. Ein weiterer Weg ist, beim ersten Login, einen automatisch generierten Schlüssel zu erhalten, bei Server und Client zu speichern, jeden API-Treffer zu überprüfen.

    
sachin 12.10.2015 13:42
quelle
0

Sie könnten params in ui-router Ссылка

verwenden     
user3323654 13.02.2016 13:03
quelle
-1

Ich stimme den Bedenken von Chris Russo zu. Hier geht es um Sicherheitsproblem. Wenn Sie angular für Ihr Front-End verwenden, benötigen Sie ein Framework, das eine starke Fähigkeit hat, Ihre Anwendung zu sichern, wenn jemand versucht, Ihre Website / Anwendung anzugreifen. Ich werde das Spring Framework (Spring_Security) empfehlen, das sich bei der Sicherung Ihrer Webanwendung bewährt hat. Sie müssen jedem Benutzer Rollen zuweisen, z. B. ROLE_USER oder ROLE_ADMIN. Ich werde nicht ins Detail gehen, wie es zu tun ist, aber dies wird dazu beitragen, Ihre Bedenken zu lösen. :)

    
rico 17.06.2014 14:02
quelle