TL; DR: Zugriff über clientseitige Berechtigungen beschränken oder Apps in separate Dateien aufteilen und den Zugriff auf jede Datei beschränken?Implementieren Sie clientseitige ReactJS-Berechtigungen oder brechen Sie Apps in mehrere Dateien auf?
Ich verwende ReactJS (mit React Router, etc.), um viele kleine clientseitige Anwendungen zu erstellen. Sie werden von den Arbeitern im Feld benutzt, ohne viel zwischen ihnen zu wechseln.
Ich benutze Symfony2 als Back-End. Ich habe hier bereits Berechtigungen für Server-gerenderte Apps/Seiten eingerichtet.
Bisher haben alle meine Benutzer (von React apps) die gleichen Berechtigungen benötigt, also habe ich nur den Zugriff auf die Seite eingeschränkt, die die Hauptdatei app.js (und auch die API von Kurs). Aber jetzt muss ich in der Lage sein, einige dieser Apps von bestimmten Benutzern zu verstecken. Ich habe zwei Möglichkeiten, wie ich es sehe:
- ein clientseitige Berechtigungssystem implementieren, die dem Symfony2 serverseitige Ansatz
- Split ergänzt meine apps Reagieren in getrennte gebündelte Dateien und dient nur die entsprechenden Seiten zu die richtigen Berechtigungen Inhaber
Option 1 würden viel Komplexität in das Projekt ein, und ich habe keine Ahnung, wie ich einmal anfangen würde, wie es in der Art von Tutorials gibt nicht viel. (Obwohl es unwahrscheinlich ist, ist es übrigens egal, ob Benutzer den clientseitigen Code inspizieren und in die geschützten Bereiche einbrechen, da die zugrunde liegenden Daten über die API geschützt sind.) Aber es würde eine einzige Code-Basis und besser bedeuten Caching, da der gesamte Herstellercode wie React selbst nur einmal heruntergeladen würde.
Option 2 würde bedeuten, dass ich es vermeiden könnte, ein clientseitiges Berechtigungssystem zu erstellen, es würde jede App einfacher machen und sich nahtlos in mein existierendes serverseitiges Berechtigungssystem einfügen. Es wäre jedoch viel weniger flexibel und würde bedeuten, den gleichen Herstellercode aufgrund vieler Dateien mehrmals zu bedienen.
Welchen Ansatz sollte ich wählen?
Es ist nicht wirklich wichtig für einen Benutzer, den Client-Code zu "hacken" und eine Seite zu sehen, die er nicht sehen sollte, weil er sowieso keine Daten vom Server an diesem Endpunkt abrufen kann. – whitep4nther
Das ist richtig, das habe ich gesagt, obwohl es für die Frage nicht relevant ist. Ich wollte das nur klarstellen, falls es dazu kommt. – user128216
Wenn Sie nur den Zugriff auf diesen Teil der App einschränken möchten, fügen Sie einfach keinen Link ein, abhängig von der Benutzerzugriffsebene (dies ist kein Berechtigungssystem, einfach eine hde/show).Wenn Sie den Zugriff auf den Code sogar noch weiter einschränken möchten, ist dies etwas komplizierter, entweder wenn Sie mehrere Bundles für jede Berechtigungsstufe erstellen oder Sie die Seite DOM langsam abrufen. Ich sehe nichts falsch mit der allerersten Lösung, aka einfach keinen Link zu setzen. – whitep4nther