2016-03-22 14 views
-1

Was ist der beste Weg, Benutzerberechtigungen whith PHP zu verwalten ..beste Art und Weise Benutzerberechtigungen mit PHP

1) Durch die Verwendung von neue Tabelle zu verwalten?
table user_permissions (id, userId, addNews, editNews, deleteNews, ...)
Die Art der einzelnen Eigenschaften Spalte boolean (1 => ja, 0 => no)

2)Logikgatter Durch die Verwendung von?

$addNews = 1; 
$editNews = 2; 
$deleteNews = 4; 
... 
$permissions = $addNews | $editNews | $deleteNews | ...; 

//Save permission in user table 
//and save it in session on login to test permission in every page 

$permissions = $_SESSION['permissions']; 
if($permissions & 1) // true -> user has permission to add news 

Oder haben Sie einen anderen Weg?

+0

Neue Tabelle. Auf diese Weise kann der Benutzer es nicht manipulieren (Es gibt Tools zum Bearbeiten von Cookies, die Sie kennen), so dass es sicherer ist. Und es ist auch leicht zu verwalten (z. B. mit einem Back-End-Panel, anstatt eine Datei zu bearbeiten) –

+0

Sitzung nicht in Cookies gespeichert .. –

Antwort

2

Es gibt keinen besten Weg. Jede Lösung hängt davon ab, wie Sie sie verwenden möchten.

Zum Beispiel mindestens folgende Fragen, die Sie beantworten müssen:

  • Wie viele Berechtigungen, die Sie haben?
  • Sind sie hierarchisch (guest -> user-> admin -> super admin) oder nicht? (Ein Benutzer kann beispielsweise Nachrichten schreiben, aber nicht löschen.)

Trotzdem wäre es einfacher, einen Punkt in Ihrem Code zu haben, an dem Sie die Berechtigungen überprüfen.

function havePermission($name){ 
// logic 
} 

NIE! Führen Sie Inline-Berechtigungsüberprüfungen in Ihrem Code durch. Das ist ein schlechter Habit.

Darüber hinaus gibt es tatsächlich drei Möglichkeiten, wie Berechtigungen speichern:

  1. Neue Tabelle (oder Hauptbenutzertabelle), wie Sie zur Verfügung gestellt:

    userId, accessNews, accessPages, etc

  2. Neue Tabelle, jedoch , mit anderer Struktur: userId, permissionId
  3. Hauptbenutzer Tabelle, ein Feld: userId, groupId OR userId, access

    Bei dieser Lösung in den Schreibzugriff Sie Zugriffsmatrix, die Sie boolean Logik überprüfen können.

Verwandte Themen