Goede auth class maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

Bekijk vacature »

C# .NET Software Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen software development waar je gaat werken voor een jong en flexibel bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Software Developer met ervaring binnen C# .NET die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! In deze functie ga jij je bezighouden met: Meedenken in oplossingsrichtingen; Werken aan de architectuur; Het verbeteren van functionaliteiten binnen het dataplatform; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je aan de

Bekijk vacature »

Technisch Applicatie ontwikkelaar

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! In deze functie werk jij voornamelijk aan: Het onderhouden en ontwikkelen van de IT systemen; Het opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werk je aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkel en implementeren je MS PowerApps en Power BI. Bedrijfsprofiel Je komt terecht bij een familiair

Bekijk vacature »

Medior PHP Developer

Functie omschrijving Ben jij een getalenteerde PHP Developer en aan de slag in een gemotiveerd team? Lees dan snel verder! Voor onze opdrachtgever in de omgeving van Valkenswaard zijn we op zoek naar een ervaren PHP developer. Jij gaat hier zorg dragen voor het optimaliseren en up-to-date houden van de bestaande applicaties. Je werkt verder aan de applicaties die jij verder ontwikkelt. Dit doe je voornamelijk met PHP en MySQL. Verder ga je je bezig houden met: Het uitbouwen van het E-commerce software platform. Deelnemen aan overleggen met het team. Het ondersteunen van jouw team developers (3 man) en helpen

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

Bekijk vacature »

Ervaren PHP Developer

Functie omschrijving Jelling IT zoekt ervaren PHP developer! Voor een organisatie in de regio Rhenen zijn wij op zoek naar een ervaren PHP developer die gaat functioneren als een verlengstuk van de klant. Jij bent iemand die technisch complexe zaken met enthousiasme aanvliegt. Je bent in staat om aan meerdere projecten te werken en werkt graag met de nieuwste technieken. In deze functie werk je veel samen met front-end developers en stel je alles in het werk om grote verschillen voor de klanten teweeg te brengen. Verder ben jij iemand die graag zichzelf uitdaagt en die altijd de beste wilt

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

Senior PHP developer/ Software Architect

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Medior .NET Ontwikkelaar

In het kort Als .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging graag met

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Senior Node.js developer Digital Agency

Functie Door de groei van de organisatie zijn ze op zoek naar een Tech Lead. Als tech lead ben jij verantwoordelijk Als Back end Node.js developer kom je terecht in een van de 8 multidisciplinaire teams in het projectenhuis. Afhankelijk van jouw interesses, wensen en capaciteiten word je bij projecten en onderwerpen naar keuze betrokken. Als ervaren ontwikkelaar zul jij vaak leiding nemen in de projecten en in het team een aanvoerder zijn van technische discussies. Uiteindelijk wil jij natuurlijk de klantwensen zo goed mogelijk vertalen naar robuuste code. De projecten kunnen varieren van langlopende- tot kleinschalige trajecten. Voorheen werkte

Bekijk vacature »

Lead Fullstack developer

Functie omschrijving Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Wij zijn op zoek naar een full stack developer die zich bezig wil bezig houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator door middel van

Bekijk vacature »

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »
Wouter Van Marrum

Wouter Van Marrum

02/05/2015 22:12:36
Quote Anchor link
Hallo iedereen,

Ik ben bezig met mijn eigen systeem dat gebaseerd is op MVC.
En nu wil ik voor al mijn dashboard controllers een auth class/functie gebruiken zodat deze goed beveiligd is.

Normaal gezien zou ik wat gaan proberen en als het me goed "lijkt" zo laten.
Deze keer wil ik voordat ik er mee begin eigenlijk al om hulp vragen.

Kan iemand mij vertellen hoe ik een goede beveiliging opzetten maar wel op zo'n manier dat deze zowel te gebruiken is voor gebruikers als administrators.

Dit zou ook een mooi moment zijn voor een goede discussie om erachter te komen wat men liever doet.

M.V.G,
Wouter.

Topic verplaatst naar het OOP onderdeel[/modedit]
Gewijzigd op 03/05/2015 11:20:51 door Wouter J
 
PHP hulp

PHP hulp

06/05/2024 19:41:18
 
Thomas van den Heuvel

Thomas van den Heuvel

02/05/2015 22:36:20
Quote Anchor link
Een tijdje geleden had ik hier min of meer een topic over geopend, maar die heb je waarschijnlijk niet met de zoekfunctie kunnen vinden ;-) (*drumm fill*).

Ik weet niet of dat helemaal de lading denkt, maar ik heb over dit topic zeer recent een artikel geschreven (shameless self plug).

Bekijk ook vooral het voorbeeld.

Sure, het is niet echt OOP, maar wel retesimpel en volgens mij best krachtig. En je kunt hier best een eenvoudge class omheen fietsen.

Hier zijn natuurlijk 568036873555783857359873 mogelijke varianten op te bedenken.

De bovenstaande site (eigen framework) maakt hier ook gebruik van om adminpagina's en dergelijke af te schermen.
Gewijzigd op 02/05/2015 22:48:08 door Thomas van den Heuvel
 
Wouter Van Marrum

Wouter Van Marrum

02/05/2015 23:23:22
Quote Anchor link
Heej thomas,

Toevallig heb je topic inderdaad al gelezen ja.
En heel eerlijk ik snap daar totaal niks van.

Komt meer om het feit hoe je rechten benoemt en dergelijke.
Ik ben gewend om het volgende te zien :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    // Fake check
    $user = User::select(1); // admin gebruiker ophalen.
    Auth::hasRights('PAGE FROM DB', $user); // $user->rigts of $user->level
    
    // In auth class.

    if($page['needed_rights'] == $user->rights) {
    // true....
?>


Misschien kun je me beter uitleggen hoe jouw manier werkt.
 
Thomas van den Heuvel

Thomas van den Heuvel

02/05/2015 23:36:17
Quote Anchor link
Heb je het artikel (in het engels) ook gelezen? Daarin staat uitgelegd wat er gebeurt. Je kunt in feite complexe if-statements die op rechten controleren versleutelen tot een geserialiseerde variant. Deze geserialiseerde variant kun je koppelen aan acties. Meestal is deze "actie" toegang tot een resource (bijvoorbeeld een admin pagina), maar zowel de acties als de resources kunnen van alles zijn.

Het voordeel van een geserialiseerde expressie is dat je deze ontkoppelt van code (deze is dus niet meer hard-coded maar dynamisch).

In mijn variant evalueer je de expressie tegen een set van rechten. Dit levert dan een simpel "ja" of "nee" op.

Bijvoorbeeld: de expressie bevat een statement die beschrijft welke rechten je nodig hebt voor toegang tot een pagina. De set van rechten kunnen de rechten van de huidige gebruiker zijn. Daarmee kun je dus heel simpel de vraag "mag deze gebruiker deze pagina zien" beantwoorden, en de rechten die nodig zijn om toegang te krijgen tot de pagina kun je dus per pagina instellen. De "check" zelf blijft ongewijzigd.

Het artikel beschrijft dit eigenlijk stap voor stap :s.

EDIT: het gebruik is verder vrijwel hetzelfde als jouw voorbeeld hierboven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// de rechten-expressie van de resource
$expression = '|,1,&,2,!,3';

// de rechten die iemand bezit
$myRights = array(
    1 => true,
    3 => true,
);


// de controle of iemand een bepaalde actie mag uitvoeren
if (isAllowed($expression, $myRights)) {
    // cake
}
?>

Die geserialiseerde expressies blijven verder "onder water", waar de gebruiker tegenaan kijkt is een boompje waarin ze kunnen klikken en waar ze de rechten-expressie op een semi-gebruiksvriendelijke manier kunnen opbouwen.
Gewijzigd op 02/05/2015 23:46:22 door Thomas van den Heuvel
 

02/05/2015 23:43:16
Quote Anchor link
Zelf ben ik ook heel veel met OOP bezig maar ik begrijp niet waarom je allemaal static methods hebt?
Als het over auth gaat dan spreek je toch 1 class aan? En die dan niet static denk ik.

Wil je meerdere classes aanspreken dan heb je het niet bij het juiste eind en kan je misschien met interfaces werken.
 
Thomas van den Heuvel

Thomas van den Heuvel

02/05/2015 23:55:15
Quote Anchor link
Als je Auth class verder geen "state" heeft is er volgens mij niet echt iets op tegen om deze class te laten bestaan uit enkele static (helper) methods? Wat voor spannende dingen zou een Auth class allemaal moeten bijhouden dan?
 
Wouter Van Marrum

Wouter Van Marrum

03/05/2015 11:31:38
Quote Anchor link
@rickert, Hoe zou jij dit dan doen ?

Want volgens mij ben ik best duidelijk geweest toen ik zei : ik ben gewend om dit te zien.
Ik heb van te voren al naar oplossingen gezocht maar weet niet of dat wel correct is.

Daarom wil ik nu dus een goede beveiliging hebben die ik voor meerdere groepen gebruikers kan gebruiken.

Verder lijkt me de Auth class mij meer een helper class.
Dus als ik die voorbij zou zien komen in een code kan ik best begrijpen als iemand daar eerder een static functie gebruikt ipv van te initialiseren.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/05/2015 11:47:07
Quote Anchor link
Role Based Access Control of gewoon RBAC

http://www.sitepoint.com/role-based-access-control-in-php/

In een MVC model zijn er drie handige momenten om op de rechten te controleren:
- door de router/dispatcher om hele delen van de URI af te schermen.
Bijv: mydomain.com/admin/??? (alles wat met admin begint dus)
- bij de Controller methods
- in de view (om bijv een bepaalde div wel of niet te laten zien)
Gewijzigd op 03/05/2015 11:52:57 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

03/05/2015 13:13:47
Quote Anchor link
RBAC kan ook een oplossing zijn voor jouw situatie, maar stel dat je het volgende wilt:

Je hebt een collectie van soortgelijke resources (denk bijvoorbeeld aan artikelen of pagina's) waar je op grond van permissies toegang toe krijgt; nog enkel even toegang, we hebben het niet eens over andere bewerkingen zoals wijzigen of verwijderen. Nu heb je dus bijvoorbeeld een of meer classes voor het opzetten/aanmaken/afdrukken etc. hiervoor: Article, Page, whatever.

Vervolgens wil je gaan vastleggen wie toegang heeft tot deze artikelen / pagina's. Waar doe je dit? Rechtstreeks in deze code? Maar dan timmer je dus permissies vast op "Klasse niveau", tenzij je Henk, Piet, en Klaas elk verschillende rechten geeft die je allemaal opneemt in de controlelijst. Het probleem is dus een beetje dat je geen verschillende permissies kunt hebben voor eenzelfde resource, althans, RBAC voorziet daar niet (standaard) in?

Dit is misschien verwarrend, dus een voorbeeld: stel je hebt een set artikelen: 1,2,3. Hoe kun je met RBAC aangeven dat artikel #1 alleen toegankelijk is met rol/permissie A, artikel #2 alleen met rol/permissie B en (nog een complexere variant) artikel #3 alleen toegankelijk is als je ZOWEL rol/permissie A ALSMEDE rol/permissie B hebt?

Dit moet je wel aan de individuele resource-instances hangen (als je zulke fine-grained control wil)? En in de klasse(s) zelf moet je generieke checks hebben die zulke controles kan uitvoeren. Generiek, omdat niet op voorhand vaststaat hoe zo'n check er uitziet.

Dit is precies waar een/mijn ACL in voorziet.

Tis maar net welke mate van controle je wilt hebben. Enkel met het kiezen van een authorisatiestrategie ben je er niet: je moet dan nog je rollen/rechten/etc. gaan inrichten en ook is daar de manier waarop je omspringt met de componenten waarmee je gebruikers bewerkingen wilt laat uitvoeren.

Je zou het dus eigenlijk om moeten draaien: welke functionaliteit heb je, wat voor bewerkingen wil je hier (door welke) gebruikers op laten uitvoeren. Op grond daarvan zou je eigenlijk een strategie moeten kiezen.
 
Wouter Van Marrum

Wouter Van Marrum

03/05/2015 13:37:33
Quote Anchor link
@thomas en @frank,

Dank voor jullie reacties.
Ik heb inderdaad al eens die Role Based Acces Control gezien op sitepoint.
Reden dat ik niet direct die weg ben in gegaan is de datum dat het artikel geplaatst is.

Maar als voorbeeld zijnde is het eigenlijk wel wat ik zoek.
Hetgeen wat jij bedoelt thomas zal voor mijn website niet echt van toepassing zijn.

Indien het bijvoorbeeld zover komt dat ik bepaalde urls die beginnen met iets wil blokkeren voor andere gebruikers zou ik dit via de db instellen. ( dat zal zo gedaan zijn dmv wat tabellen.)

Ik zal nog eens het artikel doorlezen en er mee beginnen.
 



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.