Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wdrażanie uprawnień opartych na reputacji

user_table
id, etc

permission table
id, user_id, permission_type

dzięki tej strukturze każdy użytkownik może mieć kilka typów uprawnień powiązanych ze swoim kontem, po jednym dla każdego zestawu funkcji, które mogą mieć dostęp do. nigdy nie będziesz musiał zmieniać struktury tabeli w celu dodania nowych typów uprawnień.

aby pójść o krok dalej, możesz uczynić każdy rodzaj zezwolenia liczbą binarną. w ten sposób możesz sprawić, że zestaw uprawnień będzie reprezentowany przez jedną liczbę całkowitą za pomocą operatorów bitowych.

na przykład, jeśli masz stałe

PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4

możesz połączyć te wartości w jedną liczbę całkowitą za pomocą operatora bitowego „|”

(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions

następnie, aby sprawdzić, czy mają określone uprawnienia, użyj operatora bitowego „&”

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

gdybyś to zrobił, potrzebowałbyś tylko jednego rekordu bazy danych dla każdego zestawu uprawnień.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL zwraca false w PHP

  2. Porównanie Oracle MySQL, Percona Server i MariaDB

  3. BŁĄD 1878 (HY000):Błąd tymczasowego zapisu pliku

  4. Mysql:wykonanie polecenia odrzuconego użytkownikowi ''@'localhost' z powodu rutynowego błędu

  5. MySQL – różne metody poznania aktualnego użytkownika