sql >> Database >  >> RDS >> Mysql

Machtigingen implementeren op basis van reputatie

user_table
id, etc

permission table
id, user_id, permission_type

met deze structuur kan elke gebruiker verschillende machtigingstypen hebben die aan zijn account zijn gekoppeld, één voor elke set functies die ze kunnen toegang hebben tot. je zou nooit de tabelstructuur hoeven te veranderen om nieuwe soorten rechten toe te voegen.

om nog een stap verder te gaan, zou u van elk type toestemming een binair getal kunnen maken. op deze manier zou je een set permissies kunnen laten vertegenwoordigen door één geheel getal door bitsgewijze operatoren te gebruiken.

bijvoorbeeld als je de constanten had

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

je zou deze waarden kunnen combineren tot één geheel getal met behulp van een bitsgewijze operator "|"

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

gebruik vervolgens de bitsgewijze operator "&"

. om te controleren of ze een specifieke toestemming hebben
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

als je dat deed, zou je maar één db-record nodig hebben voor elke set machtigingen.



  1. Installeren en werken met MySQL 5 op Windows 7

  2. Een lijstitem vinden op een opgegeven positie in MySQL

  3. Is er een manier om de JBoss-verbindingspool opnieuw te verbinden met Oracle wanneer de verbindingen slecht worden?

  4. Vergelijkingsprobleem met Oracle PL/SQL-tekenreeksen