Frage

Ich debattiere die beste Art und Weise ziemlich komplexe Berechtigungen von dem Server zu einer AJAX-Anwendung zu propagieren, und ich bin nicht sicher, der beste Ansatz zu nehmen.

Im Grunde möchte ich meine Berechtigungen definiert werden, so kann ich eine ganze Reihe von Berechtigungen in einem Schuss fordern und die Benutzeroberfläche anpassen als angemessen (die Änderungen an der Benutzeroberfläche so niedriges Niveau wie das Deaktivieren bestimmte Elemente des Kontextmenüs sein können). Natürlich muss ich noch die Berechtigungen Server-Seite erzwingen.

Also, ich frage mich, ob jemand irgendwelche Vorschläge für den besten Weg, um

hat
  1. die Berechtigungen erhalten und sie in Servercode verwenden
  2. haben einfachen Zugang zu den Berechtigungen in Javascript
  3. kein Round-Trip-Anfrage an den Server für jede einzelne Erlaubnis machen müssen

Die Gedanken?

War es hilfreich?

Lösung

Wenn Sie eine Reihe von klaren Berechtigungen haben, wie eine „Anwenderebene“ oder „Benutzertyp“, könnten Sie einfach den Wert überliefern in einem versteckten Feld und Zugriff auf den Wert durch das DOM. Sie könnten dies noch tun, wenn Ihre Berechtigungen detaillierteren waren, aber Sie würden entweder viele versteckte Felder haben oder würden Sie die Informationen in XML oder JSON oder einem anderen Format kodieren müssen.

Sie können sie als Bit-Flags gesetzt, so dass Sie könnte oder ein einzelner numerischer Wert mit einer Maske, um zu sehen, ob der Benutzer die Berechtigung für eine bestimmte Aktivität hat. Das wäre sehr flexibel und solange Sie haben nicht mehr als 32 oder so spezifisch „Rechte“, dass für jede Permutation dieser Rechte in einem sehr kleinen Paket erlauben würde (im Grunde ein unsigned int).

Zum Beispiel:

0x00000001 //edit permission
0x00000002 //create new thing permission
0x00000004 //delete things permission
0x00000008 //view hidden things permission
   .
   .
   .
0x80000000 //total control of the server and everyone logged in

Dann ein Benutzer mit einer Genehmigung von 0x000007 könnte bearbeiten, erstellen und löschen, aber sonst nichts.

In jedem Fall denke ich, Sie auf dem richtigen Weg sind - die Anfrage machen einmal pro Seite Aufruf, speichern Sie die Berechtigungen in einer globalen Datenstruktur JavaScript, und gehen von dort aus. AJAX ist schön, aber Sie wollen nicht den Server für jede spezifische Erlaubnis, alle über Ihre Seite abzufragen. Sie würden es einmal auf der Seite zu laden tun, die Präsentation Ihrer Seite und speichern Sie den Wert in einer globalen Variablen einrichten Bezug dann die Berechtigung (n) lokal für Event-Funktionen.

Andere Tipps

Wenn Sie die Berechtigungsstruktur an den Client als JSON-Objekt übertragen (oder XML, wenn Sie bevorzugen), können Sie das Objekt mit dem clientseitigen Code, manipulieren und sie an den Server zurückschicken, was tun kann, was es muss, um die Daten zu validieren und es bestehen bleiben.

ich unbedingt sehen es nicht als die „richtige“ Lösung, aber wäre es möglich, die ganze Erlaubnis Sachen auf der Server-Seite zu halten, und nur die aktualisierte Benutzeroberfläche dienen eher als eine Art von JSON Berechtigungen

Sie müssten die Entscheidung treffen, je nachdem, wie beschäftigt und intensiv Ihre App zu sein erwartet, aber auf jeden Fall eine Entscheidung lohnt sich so oder so

Encode sie als JSON .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top