Goede auth class maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

Node.js developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Front-End React Developer

As a Front-End React Developer you improve the user-experience of our web applications for your colleagues in Coolblue. How do I become a Front-End React Developer at Coolblue? As a Front-End React Developer you are responsible for developing user interface components and implementing them using React.js concepts and workflows. You work with the UX Designer and get energy from coming up with creative solutions and present these within the team. During the day you gather and welcome feedback on your technical and soft skills. Would you like to become a Front-End React Developer at Coolblue? Read below if the job

Bekijk vacature »

Fullstack developer (NodeJS, React, AWS)

Functie Als Fullstack developer kom je te werken in het ontwikkelteam, maar zoals gezegd komt er veel meer bij kijken dan alleen maar ontwikkelen. Je bent samen met je collega’s continu bezig om de software uit te breiden maar hiernaast doe je doorlopend onderzoek naar de inzet van bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Maar waar staan ze nu? Na een onderzoeksfase van ruim een jaar zijn

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Medior Mobile Developer iOS Amsterdam

Functie What will you be doing as Mobile Developer? As an iOS app developer you will work in a multidisciplinary team of app developers, web developers and designers. You will work on world-class apps that will be used by thousands of people. There is a lot of room for self-development on a technical and personal level. Together with the rest of the team you develop in the newest techniques and you go for the best quality. We work with Kotlin Multiplatform Mobile to develop hybrid apps and we guarantee quality with peer reviews, unit testing and we use a CI/CD.

Bekijk vacature »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

Backend Developer Scrummaster .NET

Samengevat: Deze werkgever is een ambitieus internetbedrijf met een passie voor digitale communicatie. Ben jij geschikt als Backend Developer? Heb je ervaring met .NET platform? Vaste baan: Backend Developer / SCRUM Master Scrum HBO WO €3.800 - €6.000 Deze werkgever is een innovatief bedrijf met enthousiaste mensen die jarenlang ervaring hebben met het ontwikkelen internet- en intranetoplossingen. Wij houden van korte lijnen en open en eerlijke communicatie. Wij zetten graag onze jarenlange ervaring in om perfect werkende oplossingen te ontwikkelen. Wij ondersteunen dienstverlenende organisaties bij het ontwikkelen en realiseren van een effectief, adaptief communicatieplatform. Je ontwikkelt met ons de meest

Bekijk vacature »

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

Bekijk vacature »

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior Front end developer Onderwijssoftware

Functie Als Junior front end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Software Ontwikkelaar

Functieomschrijving In deze uitdagende functie als Software Developer ga je de volgende taken uitvoeren: Maatwerk back-end software programmeren; API koppelingen bouwen; Software optimaliseren voor klanten; Bouwen maatwerk applicaties; Werken met Microsoft stack zoals C#, .NET (Core) en Entity framework; Bedrijfsprofiel Je gaat werken bij een klein softwareontwikkelingsbureau, die maatwerk software bouwt voor klanten door heel Nederland. Dit doen zij al meer dan 20 jaar. Het is van oorsprong een familiebedrijf, opgezet door de eigenaar, die er nog steeds werkt. Het team bestaat vooral uit back-end developers en één systeembeheerder. Je krijgt veel kans om jezelf te ontwikkelen en krijgt tevens

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

26/12/2024 10:20:37
 
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.