Das Menüberechtigungsmanagement ist ein wichtiger Bestandteil davon bei der Entwicklung einiger rollenbasierter Berechtigungsmanagementsysteme. Um verschiedene Benutzer oder Rollen zu ermöglichen, um auf verschiedene Menüelemente zuzugreifen, können wir PHP-integrierte Funktionsfunktionen array_diff () verwenden, um Menüelemente zu vergleichen und herauszufiltern, auf die Benutzer zugreifen können. In diesem Artikel wird vorgestellt, wie die Funktion array_diff () verwendet wird, um ein differenziertes Menüberechtigungsverwaltungssystem zu implementieren.
In PHP kann die Funktion array_diff () verwendet werden, um zwei oder mehr Arrays zu vergleichen, die Elemente zurückgeben, die im ersten Array vorhanden sind, aber nicht in anderen Arrays enthalten sind. Die grundlegende Nutzung ist wie folgt:
array_diff(array $array1, array $array2, array ...$arrays): array
Diese Funktion gibt ein Array zurück, das Elemente in $ array1 enthält, jedoch nicht in $ array2 und anderen Arrays.
In der Menüberechtigungsverwaltung verfügt jeder Benutzer über eine Reihe von Berechtigungskennungen (normalerweise die ID des Menüelements), und das System entscheidet, welche Menüs auf der Grundlage der Rolle des Benutzers angezeigt werden soll. Wir können die Funktion array_diff () verwenden, um einen Unterschied zwischen dem vollständigen Menü des Administrators und dem Menü gewöhnlicher Benutzer zu machen, wodurch differenzierte Menüberechtigungen erhalten werden.
Zunächst definieren wir ein Array, das alle Menüelemente und ein Array von Berechtigungen für jeden Benutzer enthält. Angenommen, wir haben ein System mit mehreren Menüelementen. Jeder Menüelement enthält eine eindeutige ID.
// Alle Menüelemente im System
$all_menus = [
1 => 'Titelseite',
2 => 'Benutzerverwaltung',
3 => 'Produktmanagement',
4 => 'Auftragsmanagement',
5 => 'Jahresabschluss',
6 => 'Systemeinstellungen'
];
// Menüberechtigungen des Administrators
$admin_permissions = [1, 2, 3, 4, 5, 6]; // Administratoren können auf alle Menüs zugreifen
// Menüberechtigungen für normale Benutzer
$user_permissions = [1, 2, 3, 4]; // Normale Benutzer können nur auf einige Menüs zugreifen
Als nächstes verwenden wir Array_Diff (), um den differenzierten Teil des Administratormenüs und das gewöhnliche Benutzermenü zu erhalten. Das Menü, das wir zurückgeben möchten, ist ein Menüelement, auf das gewöhnliche Benutzer nicht zugreifen können, dh ein Menüelement, das Administratoren haben, aber gewöhnliche Benutzer nicht haben.
// Erhalten Sie den Unterschied zwischen Administrator und normalen Benutzermenüs
$diff_permissions = array_diff($admin_permissions, $user_permissions);
// Differenzierte Menüberechtigungen ausdrucken
echo "Administrator-exklusive Menüberechtigungen:\n";
foreach ($diff_permissions as $menu_id) {
echo $all_menus[$menu_id] . "\n";
}
Über den obigen Code können wir Menüelemente ausgeben, die der Administrator hat, aber nicht auf normale Benutzer zugreifen kann. Die Ausführungsergebnisse sind wie folgt:
Administrator-exklusive Menüberechtigungen:
Jahresabschluss
Systemeinstellungen
Im tatsächlichen Berechtigungsverwaltungssystem müssen wir auch dynamisch unterschiedliche Menüverbindungen basierend auf den Berechtigungen des Benutzers anzeigen. Unter der Annahme, dass der Menüelement mit einer bestimmten URL verknüpft werden muss, können wir die URL in das Menüarray aufnehmen und die URL gleichzeitig filtern, wenn die Berechtigungen gefiltert werden.
// Definition Band URL Menüelemente
$menus_with_url = [
1 => ['name' => 'Titelseite', 'url' => 'https://www.m66.net/home'],
2 => ['name' => 'Benutzerverwaltung', 'url' => 'https://www.m66.net/user-management'],
3 => ['name' => 'Produktmanagement', 'url' => 'https://www.m66.net/product-management'],
4 => ['name' => 'Auftragsmanagement', 'url' => 'https://www.m66.net/order-management'],
5 => ['name' => 'Jahresabschluss', 'url' => 'https://www.m66.net/financial-report'],
6 => ['name' => 'Systemeinstellungen', 'url' => 'https://www.m66.net/system-settings']
];
// Erhalten Sie den Unterschied zwischen Administrator und normalen Benutzermenüs
$diff_permissions = array_diff($admin_permissions, $user_permissions);
// Differenzierte Menüs drucken und ihre URL
echo "Administrator-exklusive Menüberechtigungen及链接:\n";
foreach ($diff_permissions as $menu_id) {
echo $menus_with_url[$menu_id]['name'] . " - " . $menus_with_url[$menu_id]['url'] . "\n";
}
Die Ausführungsergebnisse sehen so aus:
Administrator-exklusive Menüberechtigungen及链接:
Jahresabschluss - https://www.m66.net/financial-report
Systemeinstellungen - https://www.m66.net/system-settings
Über die obige Methode verwenden wir die Funktion von PHP von Array_Diff () , um ein differenziertes Menüberechtigungsverwaltungssystem zu implementieren. Administratoren können auf alle Menüs zugreifen, während gewöhnliche Benutzer nur auf autorisierte Menüs zugreifen können. In Kombination mit der URL können wir Zugriffslinks für jeden Menüelement bereitstellen, um die Benutzererfahrung weiter zu verbessern.
Auf diese Weise können wir nicht nur Menüs dynamisch anzeigen, auf die Benutzer zugreifen können, sondern auch effektiv steuern, auf welche Menüelemente für bestimmte Benutzer sichtbar sind. Sie können diese Funktion entsprechend den tatsächlichen Anforderungen erweitern und mehr Berechtigungskontrolllogik hinzufügen.