In der Webentwicklung ist das Erlaubnismanagement ein sehr wichtiger Teil. Normalerweise müssen wir ihren Zugriff auf bestimmte Ressourcen auf der Grundlage der Berechtigungen verschiedener Benutzer einschränken. In PHP können wir die Funktion array_filter () verwenden, um die Berechtigungen effizient zu filtern, insbesondere wenn die Benutzerberechtigungsdaten groß sind und eine sehr gute Leistung liefern kann. In diesem Artikel wird vorgestellt, wie die Funktion zur Berechtigungsfilterung in Kombination mit Array_Filter () schnell implementiert werden kann.
Die Funktion von PHP von Array_filter () wird verwendet, um Elemente in einem Array zu filtern. Diese Funktion akzeptiert ein Array und eine Rückruffunktion. Der Rückgabewert der Rückruffunktion ist wahr oder falsch . Array_Filter () entscheidet, ob Elemente im Array basierend auf dem Rückgabewert der Rückruffunktion aufbewahrt werden sollen.
Die grundlegende Syntax ist wie folgt:
array_filter(array $array, callable $callback, int $mode = 0): array
$ Array : Das Array zum Filter.
$ Rückruf : Eine Rückruffunktion für die Filterung.
$ modus : Optionaler Parameter, um den an die Rückruffunktion übergebenen Wert zu bestimmen. 0 ist die Wertübertragungsmethode, 1 ist die Schlüsselübertragungsmethode.
Angenommen, wir haben eine Berechtigungsliste, in der die Ressourcen aufgezeichnet werden, auf die verschiedene Benutzer zugreifen können, und das Array lautet wie folgt:
$permissions = [
'admin' => ['view_dashboard', 'edit_settings', 'view_reports'],
'editor' => ['view_dashboard', 'view_reports'],
'viewer' => ['view_dashboard'],
];
Wir möchten Ressourcen filtern, die sie auf der Grundlage von Benutzerrollen zugreifen können. Unter der Annahme, dass der Administrator -Benutzer die Berechtigung zur Erlaubnis benötigt, um auf alle Ressourcen zugreifen zu können, unterliegen die Benutzer von Editor und Zuschauer einige Einschränkungen.
$user_role = 'editor'; // Angenommen, es ist derzeit eine Editor -Rolle
// Filtern Sie Ressourcen mit Berechtigungen in der aktuellen Rolle heraus
$user_permissions = $permissions[$user_role];
// Liste der Ressourcen, die gefiltert werden müssen
$all_permissions = ['view_dashboard', 'edit_settings', 'view_reports', 'delete_post'];
$filtered_permissions = array_filter($all_permissions, function ($permission) use ($user_permissions) {
return in_array($permission, $user_permissions);
});
print_r($filtered_permissions);
Ausgangsergebnis:
Array
(
[0] => view_dashboard
[2] => view_reports
)
In diesem Beispiel können wir sehen, dass die Funktion array_filter () uns hilft, die Berechtigungen der aktuellen Benutzerrolle herauszufiltern.
In tatsächlichen Projekten kann die Berechtigungsfilterung aufgrund unterschiedlicher Regeln komplizierter sein, z. B. einige Berechtigungen können zusätzliche Beschränkungen aufweisen. Beispielsweise können einige Vorgänge nur ausgeführt werden, wenn bestimmte Bedingungen erfüllt sind oder einige Ressourcen spezifische Berechtigungskombinationen erfordern.
Angenommen, wir haben die folgenden Berechtigungsdaten:
$permissions = [
'admin' => ['view_dashboard', 'edit_settings', 'view_reports'],
'editor' => ['view_dashboard', 'view_reports'],
'viewer' => ['view_dashboard'],
];
// Benutzerrollen
$user_role = 'admin';
// Zusätzliche Einschränkungen für Benutzerberechtigungen
$user_restrictions = ['edit_settings']; // admin Rollen erlauben keine Bearbeitungseinstellungen
// Filtern Sie Ressourcen mit Berechtigungen in der aktuellen Rolle heraus并应用额外的权限限制
$user_permissions = $permissions[$user_role];
$all_permissions = ['view_dashboard', 'edit_settings', 'view_reports', 'delete_post'];
$filtered_permissions = array_filter($all_permissions, function ($permission) use ($user_permissions, $user_restrictions) {
return in_array($permission, $user_permissions) && !in_array($permission, $user_restrictions);
});
print_r($filtered_permissions);
Ausgangsergebnis:
Array
(
[0] => view_dashboard
[2] => view_reports
)
In diesem Beispiel filtern wir nicht nur die Berechtigungen der Benutzerrolle, sondern beschränken auch die Berechtigungen basierend auf user_restriktions .
Array_Filter () ist eine sehr nützliche Funktion in PHP, mit der wir Arrays effizient verarbeiten und filtern. In der Berechtigungsverwaltung kann die Kombination von Array_filter () die erforderlichen Berechtigungen auf der Grundlage verschiedener Benutzerrollen und Berechtigungsanforderungen leicht schnell herausfiltern. Wenn Sie eine große Menge an Berechtigungsdatenverarbeitung in Ihrem Projekt haben, kann es nicht nur die Lesbarkeit des Codes verbessern, sondern auch die Ausführungseffizienz verbessern.