2016-05-28 5 views
0

In Laravel können Sie den Zugriff auf einige Controller (z. B. Admin-bezogene Controller wie Admin/UsersController, Admin/SettingsController usw.) auf bestimmte Benutzersitzungen beschränken. Da es serverseitig ist, hat der Benutzer keine Möglichkeit, über solche Controller auszuspionieren, wenn er nicht authentifiziert ist.Wie beschränkt man Admin AngularJs Controller in Laravel?

Im Fall von AngularJs 's befindet sich der Code im Browser. So kann jeder die Javascript-Quellcodes einsehen und das Verhalten der App herausfinden. Angenommen, er könnte feststellen, dass es Controller gibt, die verwaltungsbezogene Daten verwalten. Oder jemand könnte versuchen, die URL der App für JavaScript-Dateien zu durchsuchen, um sie zu beobachten. Angenommen, er sieht http://myapp.com/AdminSettingsController.js, in denen authentifizierte Benutzer nur sehen können oder nicht sollten.

Gehen Sie zurück auf die Hauptfrage, wie lösen Sie solche Probleme?

Antwort

1

Dieses Problem hat nur eine Lösung. Behandle JavaScript nur als Sprache für deine Benutzeroberfläche. Nichts mehr als das. Speichern Sie keine vertraulichen Daten im Browser, speichern Sie auch keine vertrauliche Logik (z. B. Datenbankabfragen). Es gibt keine Möglichkeit, Netzwerkverkehr oder Quellcode vom Client zu verbergen.

Normalerweise erstellen ich eine Art von Benutzerobjekt auf Clientseite, die Benutzerrolle zum Auflösen von Berechtigungen enthält, und ich verwende die Berechtigung für Anzeige Steuerelemente, z. zeige einige Tasten nur für Admin usw. ABER, betrifft dies nur die Anzeige der Seite, wenn der Benutzer mit diesen Steuerelementen interagiert, die Steuerelemente verlassen sich auf den Server und wenn der Benutzer nicht die richtigen Berechtigungen auf dem Server als auch hat Die Interaktion mit dem Steuerelement schlägt fehl. Wenn also jemand mit etwas Wissen das Benutzerobjekt auf dem Client ändert und ihm Administratorrolle zuweist, sieht er nur das Steuerelement, was der Administrator sehen würde. Er kann jedoch keine Administratoraktionen durchführen oder sensible Daten sehen.

+0

Guter Punkt. AngularJs nur für die Benutzeroberfläche zu behandeln. Daher ist es nicht gut AngularJs Routing für solche Szenarien zu verwenden. Oder trennen Sie öffentliche AngularJs-Dateien zumindest in administrative Dateien. – doncadavona

Verwandte Themen