Gebruikersrechten in sessie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Scripter

PHP Scripter

03/10/2011 17:10:06
Quote Anchor link
Ik ben bezig met het ontwerpen van een web applicatie met CodeIgniter. Nu roep ik in mijn controller een functie in de library aan die controleert of de gebruiker toegang heeft tot deze pagina. De gebruikers rang wordt in een sessie gezet tijdens het inloggen en als die wordt aangepast door een Administrator wordt deze sessie ook automatisch aangepast omdat hij op elke pagina de sessie controleert.

Nu wil ik het anders oplossen omdat ik niet met gebruikers rangen wil gaan werken maar met specifieke instellingen per gebruiker. Dus welke gebruiker heeft toegang tot bepaalde pagina's en schrijf of alleen lees rechten heeft.

De handigste oplossing leek mij om een nieuwe tabel aan te maken en hier per gebruiker op te slaan tot welke pagina ze toegang hebben en deze vervolgens in een sessie in te laden tijdens het inloggen en dus ook controleer bij het aanroepen binnen de controller. Is dit een goede manier?
Gewijzigd op 03/10/2011 17:10:59 door PHP Scripter
 
PHP hulp

PHP hulp

22/05/2024 11:24:10
 
Victor -

Victor -

03/10/2011 18:45:53
Quote Anchor link
is het echt voor elke gebruiker anders? of zijn het toch wel groepjes?
 
PHP Scripter

PHP Scripter

03/10/2011 18:49:24
Quote Anchor link
Nee, geen groepjes. Gewoon dat je per gebruiker kan selecteren wat hij wel of niet kan.

Voorbeeld:

Gebruikers:
- Lezen
- Schrijven

Zodra er alleen lezen wordt aangevinkt kan hij alles wel bekijken maar kan hij niks wijzigen, oftewel alle inputs zijn uitgeschakeld.
Gewijzigd op 03/10/2011 18:49:36 door PHP Scripter
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

03/10/2011 19:03:38
Quote Anchor link
Ik heb een rechten systeem gebouwd wat ik afgekeken van asp.net
Ik heb dus in mijn user tabel een veld roles, dit bevat een string zoiets als 'admin, poweruser'
in de menu tabel heb ik ook weer een veld met roles en controleer daarop.
 
PHP Scripter

PHP Scripter

03/10/2011 19:10:33
Quote Anchor link
Mij lijkt het veel makkelijker om bijvoorbeeld een tabel 'permissions' aan te maken en hier in bijvoorbeeld het volgende doen:

permissionUser | permisionPage | permissionValue
1 configuration 2
1 users 1
2 users 0


0 = Geen toegang - 1 = Read - 2 = Read/Write/Edit
Gewijzigd op 03/10/2011 19:11:02 door PHP Scripter
 
PHP Scripter

PHP Scripter

05/10/2011 20:42:30
Quote Anchor link
Bump
 
PHP Scripter

PHP Scripter

10/10/2011 11:07:45
Quote Anchor link
Bump
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/10/2011 17:23:52
Quote Anchor link
Stel je dit voor, je hebt een intranet met ongeveer 40 menu onderdelen. Je hebt zeg maar 150 gebruikers. Sommige onderdelen kunnen door iedereen gezien worden, maar sommige ook niet, maar wel door anderen maar die dan op zich ook weer niet kunnen wijzigen etc, etc. Dat betekent dat je op zijn minst al een permisions tabel hebt met 6000 records.
 
PHP Scripter

PHP Scripter

26/10/2011 19:29:05
Quote Anchor link
Hoe zou ik dat dan het beste kunnen oplossen? Ik ben nu toevallig weer bezig met dit onderdeel. De gebruikers kunnen inderdaad wel hoog oplopen, maar 6.000 records is toch niet zoveel?
 
- Ariën  -
Beheerder

- Ariën -

26/10/2011 19:32:37
Quote Anchor link
6.000 records is haast niks. Ikzelf ben ook met een rechtensysteem bezig, waarbij je in een redelijk geval met 10 usergroups al 1.000 records kan krijgen.

lang de querie niet te traag wordt, is het prima. Maar vergeet niet, MySQL kan een hoop aan.
Gewijzigd op 26/10/2011 19:32:50 door - Ariën -
 
PHP Scripter

PHP Scripter

26/10/2011 20:20:23
Quote Anchor link
Aar, mag ik weten hoe je dit aanpakt?
 
- Ariën  -
Beheerder

- Ariën -

26/10/2011 20:38:00
Quote Anchor link
Het is een rechtensysteem die ik in ieder geval niet zelf heb gebouwd, maar hij is best wel makkelijk uit te breiden.

Het maakt een multidimensionale array aan met de roles (view, add, edit, delete), en elk recht heeft daarin een record, ook ID's voor diverse acties kan je meegeven, zoals forum's en modules van je applicatie.

Ik heb er eigenlijk al een tijdje niet meer naar gekeken.
Gewijzigd op 26/10/2011 20:41:06 door - Ariën -
 
PHP Scripter

PHP Scripter

27/10/2011 08:19:38
Quote Anchor link
Bedankt!
 
Elwin - Fratsloos

Elwin - Fratsloos

27/10/2011 09:07:43
Quote Anchor link
6.000 records is voor MySQL inderdaad niets, maar voor de beheerder is het redelijk onoverzichtelijk. Daarom zou ik altijd voor gebruikersgroepen gaan. Die geef je rechten en vervolgens kunnen gebruikers in meerdere groepen zitten (koppeltabel). Dan beheer je de rechten op groepsniveau.

Dat is qua beheer makkelijker omdat je dan alle gebruikers in de groep in één keer alle nieuwe rechten geeft, in plaats van voor elke gebruiker de rechten aan te passen. Hoe je dan vervolgens de rechten in de groepen indeelt is niet belangrijk.

Ik gebruik zelf voor elk recht een kolom in de tabel groep die 1 of 0 kan zijn. Bij de installatie van een nieuwe module wordt elke keer die tabel uitgebreid.
 
Kees Schepers

kees Schepers

27/10/2011 09:37:31
Quote Anchor link
Ik heb aan applicaties geprogrammeerd waar miljoenen records in tabellen zitten en zelfs dat kun je snel maken met MySQL dus inderdaad niet echt een issue.

Ik zou sowieso met rollen en daarop rechten met eventueel overwerving. Ik gebruik vaak Zend_ACL wat best goed in elkaar zit. Je zou dezelfde architectuur kunnen gebruiken:

http://framework.zend.com/manual/en/zend.acl.introduction.html
 
PHP Scripter

PHP Scripter

27/10/2011 15:42:31
Quote Anchor link
Het is nogal een lastige keuze. Ik zal ongeveer het idee kort uitleggen. Ik en een aantal beheerders kunnen verengingen toevoegen en bewerken. En binnen die verenging zitten weer beheerders die gebruikers kunnen toevoegen en/of bewerken. Maar de beheerders van de site kunnen overal bij.

Binnen elke verenging worden er gebruikers toegevoegd die spelers kunnen toevoegen en er kunnen spelers worden gescout na het stellen van eisen aan een speler, zeg maar.

Nu is het de bedoeling dat niet iedereen spelers kan bewerken/toevoegen, maar dus alleen kan inzien.
 
- Ariën  -
Beheerder

- Ariën -

27/10/2011 15:55:25
Quote Anchor link
Mijn rechtensysteem is op CRUD basis

Create, Read, Update, Delete. Ik kan bij een role zoals dit, dus bepalen wat hij/zij mag doen.

Het is gebaseerd op dit:
http://gathering.tweakers.net/forum/list_message/10623343#10623343

Alleen nog niet af, bijschaafd en geimplementeerd....
Gewijzigd op 27/10/2011 15:56:00 door - Ariën -
 
PHP Scripter

PHP Scripter

30/10/2011 17:58:14
Quote Anchor link
Ik heb het nu toch maar opgelost met gebruikers 'types': Administrator, beheerder, gebruiker, gast etc. etc..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.