Toon posts:

[DB] Rechtenstructuur vastleggen in database (ACL)

Pagina: 1
Acties:

Onderwerpen


  • AtlonXP1800
  • Registratie: augustus 2001
  • Laatst online: 22-07 15:36
Voor een website die ik aan het bouwen ben wil ik een rechtenstructuur gaan opzetten.
Ik was eerst van plan om gebruik te maken van ZEND_ACL (Zend framework), maar standaard wordt daarbij er vanuit gegaan dat alle rechten hard-coded worden vastgelegd in php code, terwijl ik het geheel juist zo flexibel mogelijk op wil zetten. Uiteindelijk ga ik waarschijnlijk nog steeds gebruik maken van zend_acl, maar bouw ik mijn eigen database backend er voor.

Om te beginnen heb ik dus een database structuur nodig om de verschillende gegevens vast te leggen. Ik wil er de volgende zaken mee kunnen vastleggen:

- één gebruiker kan meerdere rollen hebben
- één rol kan rechten hebben op verschillende objecten (resources)
- Per rol liggen ook de privileges vast die rol heeft (bijvoorbeeld read, write, delete, enz)

Met bovenstaande gegevens kom ik tot onderstaand stukje database model:



Uiteraard nog zeer simplistisch, maar dit is slechts de eerste opzet.
De koppeling tussen st_priviledge en st_recourse heeft als doel het vast legen welke priviledges er bestaan voor een bepaalde recourse.

Waar ik nu naar op zoek ben is commentaar op dit model :) Alle input is welkom. (De namen van de koppeltabellen lijken trouwens nog nergens op, daar moet ik nog wat beters voor bedenken)

  • wizzkizz
  • Registratie: april 2003
  • Laatst online: 19-04 19:32

wizzkizz

smile...tomorrow will be worse

Waarom geen gebruik maken van Zend_Acl? Uiteraard maakt het gebruik van in de DB opgeslagen rechten/rollen/resources, je moet alleen zelf (statisch) zien uit te vissen welke resource er bij elke request hoort. Dit kan door hard-coded op te geven in je controller welke rechten er benodigd zijn voor een actie.

Het kan echter ook dynamischer, misschien kan deze link je dan op weg helpen: http://codeutopia.net/blo...and-storing-dynamic-acls/.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • AtlonXP1800
  • Registratie: augustus 2001
  • Laatst online: 22-07 15:36
Uiteindelijk wil ik wel gebruik maken van zend_acl, maar out-of-the-box ondersteund het geen database backend, zend zegt er zelf dit over:
Zend_Acl was designed in such a way that it does not require any particular backend technology such as a database or cache server for storage of the ACL data. Its complete PHP implementation enables customized administration tools to be built upon Zend_Acl with relative ease and flexibility.
De link die je geeft ziet er interessant uit, daar ga ik even mee aan de slag, bedankt!

Ik zie trouwens dat het laatste voorbeeld aardig in de buurt komt van mijn idee, alleen heten de roles groups en de priviledges modes :+

[Voor 12% gewijzigd door AtlonXP1800 op 24-10-2010 17:01]


  • Kage
  • Registratie: juni 2001
  • Laatst online: 07-06-2015

Kage

Enjijook

Waarom gebruik je een aparte primary key voor je koppeltabellen? De 2 ingegeven id's moeten altijd uniek zijn dus kun je prima als primary key gebruiken. Je zult ook altijd zoeken op 1 van de 2 id's, niet de primary.

En hoe ga je om met rollen met tegenstrijdige rechten? (Dus een user heeft 2 rollen, 1 die toegang expliciet verbied en een ander die het expliciet toestaat, wat dan?)

[Voor 28% gewijzigd door Kage op 24-10-2010 19:45]



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee