Toon posts:

[Alg] Algemene rechten en specifieke rechten

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

ik zit op dit moment weer te stoeien met mijn rechtenmodule en heb enige hulp/feedback nodig.

Op dit moment zijn alle algemeen. Ik definieer een aantal rechten, die in groepen ingedeeld kunnen worden, waar weer gebruikers aan gekoppeld worden. Bijvoorbeeld het recht gebruikersbeheer of rechtenbeheer.
Deze rechten staan van de voren vast. Nu moet er een documenten module bij komen en daar vind ik het recht "Documentenbeheer" en "Lees rechten" te globaal. Ik wil eigenlijk per "map" de rechten kunnen koppelen.
Als ik dit wil doen, moet ik per map bijhouden wat het lees/schrijf recht is op de map.

Alle rechten staan in een database en de "applicatie" wordt webbased benaderd.

Waar ik aan zat te denken:
als er een nieuwe "map" aangemaakt wordt de rechten aanmaken in de rechtentabel (dit is alleen om ze te kunnen koppelen).
bij de map (in de database) als foreignkey bij houden welk recht het lezen of schrijven is.

Zo kan ik met een query bepalen of je het recht op een bepaalde map bezit, via mijn eigen rechtenmodule.

Aan de ene kant lijkt het, volgens mij, zo wel te werken.
Maar hoe lossen jullie dit op, zit ik in een "goede" richting of kan ik beter een andere manier verzinnen.

(zit nu ff denken, het zit het zelfde als de fora op dit forum)

[ Voor 4% gewijzigd door Verwijderd op 12-04-2005 09:52 ]


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 11:51
Kun je misschien iets duidelijker uitleggen wat je plan precies is. Ik geloof niet dat ik hem helemaal snap. Op dit moment heb je rechten, die gebundeld zijn in groepen. Aan die groepen rechten heb je gebruikers gehangen om te bepalen wat ze mogen doen. Tot zover volg ik het.

Dan wil je rechten per map gaan toekennen. Hier raak ik hem kwijt:
als er een nieuwe "map" aangemaakt wordt de rechten aanmaken in de rechtentabel (dit is alleen om ze te kunnen koppelen).
bij de map (in de database) als foreignkey bij houden welk recht het lezen of schrijven is.
Dat je de rechten wil opslaan in de database lijkt me logisch, maar hoe heb je dit voor ogen? zelf zou ik gaan voor een UNIX-like systeem waarin je lees- en schrijfrechten definieert voor degene die de map aanmaakt, voor gebruikers in dezelfde rechtengroep en voor anderen.

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Er moet nu een filemodule bij komen, waarin bestanden geplaatst kunnen worden. Er moeten ook mappen aangemaakt wordt om het overzichtelijk te houden.

Nu wil ik dus per map rechten toe kennen. Die eigenlijk via mijn huidige rechtenmodule toe te kennen zijn.

Het probleem zit het in dat ik in het "recht" met aangeven of het lezen of schrijven is.
Hoe kan ik dit het beste opslaan in een database, zodat het variabel blijft.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Zoals je in je eerste post al aangeeft wil je het in de DB opslaan. Heb je dit al geprobreerd? Tegen welke problemen liep je aan? Het lijkt me dat je prima rechten op een object (of dit nu een map is of niet maakt niet uit) kan bijhouden.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • TheRebell
  • Registratie: Oktober 2000
  • Laatst online: 08-05 00:27
ik heb het een beetje op dezelfde manier gedaan. Ik heb globale/algemene rechten als new/edit/delete/publish/upload. Per module kunnen er specifieke rechten zijn, die zullen dan in een operation-table worden bijgehouden. Door nu een module aan een operation te koppelen heb je een privilege: combinatie module-recht (bv news-add). Per module vraag ik alleen op of een gebruiker een bepaald benodigd recht heeft. Het systeem achterhaalt de modue zelf. Dit wordt gecontroleerd in de privilege-tabel. Een privilege koppel ik dan weer aan een rol/functie, en hier hang je weer poppetjes aan vast. Uiteraard kun je het iets uitbreiden door ook groepen te introduceren, dat ga ik nog eens een keer doen.

Enige wat je dus moet bijhouden zijn operaties, modules, rollen en poppetjes. Als je een nieuw map/module toevoegt zul je alleen moeten aangeven welke operaties die module allemaal heeft, uiteraard kun je dat ook vanzelf laten gebeuren :)

  • Antediluvian
  • Registratie: Maart 2002
  • Laatst online: 04-05 10:30
Je moet volgens mij eerst en vooral onderscheid maken tussen globale gebruiksrechten en toegangs rechten.

Als je kijkt naar bv windows zie je dat er een lijst van globale rechten bestaat (policies) en op alle bestanden zijn er access control lists (NTFS rechten) die bepalen wat, welke gebruiker mag doen.

Globale rechten in model gieten is vrij makkelijk. Aangezien ik gebruik wil maken van Roles (UserGroups) Ik heb het op de volgende manier gedaan:
Afbeeldingslocatie: http://img128.echo.cx/img128/1885/policies2iz.png


Voor de ACL's heb ik het volgende bedacht. Ik heb hierin ook enheritance (van productGroup naar subProductGroups of Products) in gestoken.
Afbeeldingslocatie: http://img128.echo.cx/img128/4500/acl2hq.png

Hopelijk heb je hier wat aan.

Mensen met opmerkingen? Laat het mij weten aub :P
Pagina: 1