sql >> Databáze >  >> RDS >> Mysql

Implementace oprávnění na základě reputace

user_table
id, etc

permission table
id, user_id, permission_type

s touto strukturou by každý uživatel mohl mít ke svému účtu přiřazeno několik typů oprávnění, jedno pro každou sadu funkcí, které mohou mít přístup k. nikdy byste nemuseli měnit strukturu tabulky, abyste mohli přidat nové typy oprávnění.

Chcete-li to udělat ještě o krok dále, můžete každý typ oprávnění vytvořit jako binární číslo. tímto způsobem můžete vytvořit sadu oprávnění reprezentovanou jedním celým číslem pomocí bitových operátorů.

například pokud jste měli konstanty

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

tyto hodnoty můžete spojit do jednoho celého čísla pomocí bitového operátoru "|"

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

pak pro kontrolu, zda mají konkrétní oprávnění, použijte bitový operátor "&"

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

pokud byste to udělali, potřebovali byste pouze jeden záznam db pro každou sadu oprávnění.



  1. Jak odebrat primární klíč v SQL

  2. Kdy nebo proč použít SET DEFINE OFF v databázi Oracle

  3. Chybová zpráva sqldeveloper:Síťový adaptér nemohl navázat chybu připojení

  4. Žádné namapované entity ORM Doctrine podle aktuální konfigurace