Inhaltsverzeichnis
Konstanten aufbauen
Definieren von Genehmigungsabbördern
Implementierung von Erlaubnisprüfungen in der Benutzeroberfläche
Die hasPermission -Funktion
Das Muster erweitern
Heim Web-Frontend CSS-Tutorial Umgang mit Benutzerberechtigungen in JavaScript

Umgang mit Benutzerberechtigungen in JavaScript

Mar 26, 2025 am 10:15 AM

Umgang mit Benutzerberechtigungen in JavaScript

Die Entwicklung einer robusten Webanwendung umfasst häufig die Verwaltung von Benutzerberechtigungen. Dieser Artikel zeigt eine saubere und effiziente Methode zum Umgang mit Benutzerberechtigungen im Front-End, unabhängig von Ihrem ausgewählten Framework (React, Vue oder Plain JavaScript). Wir werden ein erholsames API -Backend annehmen, aber das Muster passt an andere Architekturen.

Betrachten wir eine Dokumentenmanager -Anwendung mit Rollen wie Admin (Full Access), Editor (erstellen, ansehen, bearbeiten) und Gast (nur anzeigen). Das Backend sollte Benutzerrolleninformationen bereitstellen. In diesem Beispiel kann die API -Antwort eine accessLevel -Eigenschaft enthalten:

 {
  ID: 1,
  Titel: "Mein erstes Dokument",
  Authorid: 742,
  Zugriffslevel: "admin",
  Inhalt: {...}
}
Nach dem Login kopieren

Entscheidend ist, dass der Frontend nicht der alleinige Schiedsrichter der Berechtigungen sein sollte. Die Backend -Validierung ist unerlässlich, um einen unbefugten Zugang zu verhindern.

Konstanten aufbauen

Definieren Sie für Klarheit und Wartbarkeit Konstanten für Aktionen und Rollen in einer separaten Datei (z. B. constants.js ):

 const actions = {
  Modify_file: "modify_file",
  View_file: "View_file",
  Delete_file: "Delete_file",
  Create_file: "create_file" "
};

const rollen = {
  Admin: "admin",
  Herausgeber: "Editor",
  Gast: "Gast"
};

exportieren {Aktionen, Rollen};
Nach dem Login kopieren

Die Verwendung von Typscript Enums würde die Sicherheitstypsicherheit verbessern. Diese Konstanten bieten an:

  • Einzelne Quelle der Wahrheit: Sehen Sie sich alle Aktionen und Rollen leicht an.
  • Geben Sie Sicherheit ein: verhindert Tippfehler und verbessert die Code -Lesbarkeit.
  • Verbesserte Dokumentation: Vereinfacht das Verständnis für Teammitglieder.

Definieren von Genehmigungsabbördern

Erstellen Sie eine Datei (z. B. permissions.js ), um Aktionen in Rollen zuzuordnen:

 Import {Aktionen, Rollen} aus "./constants.js";

const mappings = new map ();

mappings.set (actions.modify_file, [rollen.admin, roles.editor]);
mappings.set (actions.view_file, [rollen.admin, rollen.editor, roles.guest]);
mappings.set (actions.delete_file, [rollen.admin]);
mappings.set (actions.create_file, [rollen.admin, roles.editor]);

Ausfassungsverhältnisse ausfindig;
Nach dem Login kopieren

Diese Map enthält:

  • Zentrales Management: Berechtigte leicht zu ändern.
  • Testbarkeit: Einfach zu testen mit Snapshot -Tests.
  • Lesbarkeit: Klarer Überblick über Berechtigungen.

Implementierung von Erlaubnisprüfungen in der Benutzeroberfläche

Angenommen, Sie haben eine React -Komponente, die ein Dropdown -Menü rendert:

 HaSermission von "./permissions.js";
{Aktionen} aus "./constants.js";

Funktion Dropdown ({Datei}) {
  zurückkehren (
    
Nach dem Login kopieren
    {HaSermission (Datei, Aktionen.view_file) &&
  • Aktualisieren
  • } {HaSermission (Datei, Aktionen.modify_file) &&
  • Umbenennen
  • } {HaSermission (Datei, Aktionen.Create_file) &&
  • Duplikat
  • } {HaSermission (Datei, Aktionen.Delete_file) &&
  • Löschen
  • }
); }

Dies verwendet eine hasPermission -Helferfunktion (unten erläutert), um Menüelemente basierend auf den Benutzerberechtigungen bedingt zu rendern.

Die hasPermission -Funktion

Diese Funktion prüft, ob ein Benutzer über die erforderliche Berechtigung verfügt:

 Mappings von "./permissions.js" importieren;

Funktion HaSermission (Datei, Aktion) {
  if (! file? .Accesslevel) return false;
  return mappings.has (action) && mappings.get (Aktion) .Includes (Datei.Accesslevel);
}

Ausfassungsvermittlung ausführen;
Nach dem Login kopieren

Dies überprüft die mappings für die angegebene Aktion und ob der accessLevel des Benutzers enthalten ist.

Das Muster erweitern

Dieses Muster skaliert komplexere Szenarien. Zum Beispiel Hinzufügen von Lizenzprüfungen:

 // ... (Konstanten für Lizenzen) ...

const licensemappings = new map ();
// ... (Kartenaktionen zu Lizenzen) ...

Funktion haslicense (Benutzer, Aktion) {
  // ... (Logik, um die Lizenz zu überprüfen) ...
}

Funktion hat Access (Datei, Benutzer, Aktion) {
  Rückgabe von HaSermission (Datei, Aktion) && Haslicense (Benutzer, Aktion);
}
Nach dem Login kopieren

Oder mit verschiedenen Dateitypen umgehen:

 const typemappings = new map ();
// ... (Kartenaktionen zu Dateitypen und -lizenzen) ...

Funktion HastypePermission (Datei, Benutzer, Aktion) {
  // ... (Logik, um Dateitypberechtigungen zu überprüfen) ...
}
Nach dem Login kopieren

Dies ermöglicht eine körnige Kontrolle über Berechtigungen. Die Tests sollten umfassend sein, einschließlich Snapshot -Tests für Zuordnungen und Unit -Tests für Berechtigungsfunktionen. Ein vollständiges Beispiel mit React und Tests finden Sie in CodesAndbox . Denken Sie daran, die Backend -Validierung bleibt entscheidend.

Das obige ist der detaillierte Inhalt vonUmgang mit Benutzerberechtigungen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen Mar 09, 2025 pm 12:53 PM

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework Mar 07, 2025 am 11:33 AM

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework

Erstellen Sie einen Inline -Texteditor mit dem inhaltlichen Attribut Erstellen Sie einen Inline -Texteditor mit dem inhaltlichen Attribut Mar 02, 2025 am 09:03 AM

Erstellen Sie einen Inline -Texteditor mit dem inhaltlichen Attribut

Arbeiten mit GraphQL Caching Arbeiten mit GraphQL Caching Mar 19, 2025 am 09:36 AM

Arbeiten mit GraphQL Caching

Machen Sie Ihren ersten Seltsamen -Sufle -Übergang Machen Sie Ihren ersten Seltsamen -Sufle -Übergang Mar 15, 2025 am 11:08 AM

Machen Sie Ihren ersten Seltsamen -Sufle -Übergang

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte) Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte) Mar 04, 2025 am 10:22 AM

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte)

Datei hochladen mit Multer in node.js und ausdrücken Datei hochladen mit Multer in node.js und ausdrücken Mar 02, 2025 am 09:15 AM

Datei hochladen mit Multer in node.js und ausdrücken

Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices Mar 08, 2025 am 09:45 AM

Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices

See all articles