sql >> Databasteknik >  >> RDS >> Mysql

Implementering av behörigheter baserade på rykte

user_table
id, etc

permission table
id, user_id, permission_type

med den här strukturen kan varje användare ha flera behörighetstyper kopplade till sitt konto, en för varje uppsättning funktioner de kunde ha tillgång till. du skulle aldrig behöva ändra tabellstrukturen för att lägga till nya typer av behörigheter.

för att ta detta ett steg längre kan du göra varje typ av behörighet till ett binärt tal. På detta sätt kan du få en uppsättning behörigheter att representeras av ett heltal genom att använda bitvisa operatorer.

till exempel om du hade konstanterna

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

du kan kombinera dessa värden till ett heltal med hjälp av en bitvis operator "|"

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

sedan för att kontrollera om de har en specifik behörighet, använd den bitvisa operatorn "&"

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

om du gjorde det skulle du bara behöva en db-post för varje uppsättning behörigheter.



  1. 3 sätt att returnera en sträng med flera utrymmen i SQL Server

  2. SQL, hur man använder SELECT

  3. Entitetsramverk PostgreSQL

  4. MySQL – Olika metoder för att känna till nuvarande användare