Inmiddels heb ik ongeveer alle topics over Role Based Security en aanverwante onderwerpen gelezen. Bijzonder interessant en leerzaam! Ik snap al een hoop meer van dergelijke systemen.
Het enige dat ik nog niet doorheb, is de verhouding tussen Rollen en Groepen.
Zijn rollen en groepen ideeën die elkaar aanvullen, of maak je bij het ontwerp van je gebruikers-systeem een keuze tussen een systeem dat gebaseerd is op groepen OF op rollen.
Indien - hetgeen ik zo'n beetje verwacht - de twee ideeën elkaar aanvullen, hoe verhouden groepen en rollen zich dan tot elkaar?
Is het zo, dat je groepen aanmaakt om op eenvoudige wijze gebruikers een aantal basis rechten/permissies te geven. En werken dan rollen zo, dat een rol is opgebouwd uit het lidmaatschap van specifieke groepen, eventueel aangevuld met specifieke rechten/permissies?
Zo ja, hoe is dan de verhouding tussen rollen en groepen geregeld in de (typische) database structuur.
---- Aanvulling ----
Als voorbereiding en concretisering van wat ik tot nu toe heb begrepen en wat ik graag wil bereiken, heb ik een simpele database-structuur opgezet. Die zet ik hieronder even neer ter info.
De 'permission' die in de cms_users2rights en cms_groups2rights staat, wil ik in de database gaan opslaan als 'optelling' van de permissies die een gebruiker kan hebben. Zo zal ik in mijn script de basis permissies definiëren:
READ = 1
WRITE = 2
PUBLISH = 4
Daardoor kan ik later simpelweg controleren of een gebruiker een bepaalde permissie heeft door iets als:
Ik heb in eerdere posts gelezen, dan men veel meer permissies definieert als de drie die ik hierboven heb neergezet, maar ik heb het idee dat wanneer je deze drie rechten maar op het juiste niveau implementeerd, dat deze 3 dan voldoende moet zijn (analoog aan het READ/WRITE/EXECUTE van de meeste besturingssystemen).
Is dat een slimme benadering? Of ga ik mezelf dan keihard tegenkomen.
Wat een vervelend lang verhaal ... ik hoop dat iemand nog zin heeft hierop te reageren. In ieder geval bedankt voor de moeite om helemaal tot hier te lezen!
Het enige dat ik nog niet doorheb, is de verhouding tussen Rollen en Groepen.
Zijn rollen en groepen ideeën die elkaar aanvullen, of maak je bij het ontwerp van je gebruikers-systeem een keuze tussen een systeem dat gebaseerd is op groepen OF op rollen.
Indien - hetgeen ik zo'n beetje verwacht - de twee ideeën elkaar aanvullen, hoe verhouden groepen en rollen zich dan tot elkaar?
Is het zo, dat je groepen aanmaakt om op eenvoudige wijze gebruikers een aantal basis rechten/permissies te geven. En werken dan rollen zo, dat een rol is opgebouwd uit het lidmaatschap van specifieke groepen, eventueel aangevuld met specifieke rechten/permissies?
Zo ja, hoe is dan de verhouding tussen rollen en groepen geregeld in de (typische) database structuur.
---- Aanvulling ----
Als voorbereiding en concretisering van wat ik tot nu toe heb begrepen en wat ik graag wil bereiken, heb ik een simpele database-structuur opgezet. Die zet ik hieronder even neer ter info.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| TABLE cms_users cms_userID INT(11) user VARCHAR(50) pass VARCHAR(30) ip VARCHAR(15) created BIGINT(22) last_login BIGINT(22) TABLE cms_groups cms_groupID INT(11) name VARCHAR(30) TABLE cms_operations cms_operationID INT(11) name VARCHAR(30) TABLE cms_users2groups csm_userID INT(11) cms_groupID INT(11) TABLE cms_users2rights cms_userID INT(11) cms_operationID INT(11) permission INT(4) TABLE cms_groups2rights cms_groupID INT(11) cms_operationID INT(11) permission INT(4) |
De 'permission' die in de cms_users2rights en cms_groups2rights staat, wil ik in de database gaan opslaan als 'optelling' van de permissies die een gebruiker kan hebben. Zo zal ik in mijn script de basis permissies definiëren:
READ = 1
WRITE = 2
PUBLISH = 4
Daardoor kan ik later simpelweg controleren of een gebruiker een bepaalde permissie heeft door iets als:
code:
1
2
3
| if ( $user->rights['news'] & WRITE ) {
// Blablabla
} |
Ik heb in eerdere posts gelezen, dan men veel meer permissies definieert als de drie die ik hierboven heb neergezet, maar ik heb het idee dat wanneer je deze drie rechten maar op het juiste niveau implementeerd, dat deze 3 dan voldoende moet zijn (analoog aan het READ/WRITE/EXECUTE van de meeste besturingssystemen).
Is dat een slimme benadering? Of ga ik mezelf dan keihard tegenkomen.
Wat een vervelend lang verhaal ... ik hoop dat iemand nog zin heeft hierop te reageren. In ieder geval bedankt voor de moeite om helemaal tot hier te lezen!
[ Voor 50% gewijzigd door gvanh op 19-10-2004 21:44 . Reden: Aanvulling met meer concreet gewauwel. ]
