sql >> Database teknologi >  >> RDS >> Mysql

Implementering af tilladelser baseret på omdømme

user_table
id, etc

permission table
id, user_id, permission_type

med denne struktur kan hver bruger have flere tilladelsestyper knyttet til deres konto, en for hvert sæt funktioner, de kunne have adgang til. du behøver aldrig at ændre tabelstrukturen for at tilføje nye typer tilladelser.

for at tage dette et skridt videre, kan du gøre hver type tilladelse til et binært tal. på denne måde kan du få et sæt tilladelser til at blive repræsenteret af ét heltal ved at bruge bitvise operatorer.

for eksempel hvis du havde konstanterne

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

du kan kombinere disse værdier til et heltal ved hjælp af en bitvis operator "|"

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

for derefter at kontrollere, om de har en specifik tilladelse, skal du bruge den bitvise operator "&"

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

hvis du gjorde det, ville du kun bruge én db-record for hvert sæt tilladelser.



  1. Vælg i et mange-til-mange forhold i MySQL

  2. Måler du SQL Server-ydeevne med disse metrics?

  3. FEJL 1064 (42000) i MySQL

  4. Hvordan bruger jeg alias i where-klausulen?