Moet altijd alles een moderne SPA zijn?

Pagina: 1 2 3 Laatste
Acties:

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23-09 14:00
armageddon_2k1 schreef op donderdag 29 augustus 2019 @ 08:52:
@Lethalis Ik snap niet helemaal wat Angular en RXJS met jQuery van doen hebben? Er is nagenoeg geen overlap in functionaliteit of doel.
In zekere zin is dat er wel. Als je Angular of React gebruikt heb je namelijk geen jQuery nodig.

  • Lethalis
  • Registratie: April 2002
  • Niet online
armageddon_2k1 schreef op donderdag 29 augustus 2019 @ 08:52:
@Lethalis Ik snap niet helemaal wat Angular en RXJS met jQuery van doen hebben? Er is nagenoeg geen overlap in functionaliteit of doel.
Ik weet vrij zeker dat we het niet voor DOM manipulatie gebruiken, dus dan blijven alleen functies over zoals het ophalen van data van een server ( https://api.jquery.com/jQuery.get/ ), maar dat doen we tegenwoordig juist met de Angular HttpClient en observables (vandaar dat ik rxjs noem).

PS
Krijg net te horen dat jQuery toch nog in een legacy onderdeel van het project wordt gebruikt...

[ Voor 12% gewijzigd door Lethalis op 29-08-2019 09:13 ]

Ask yourself if you are happy and then you cease to be.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 09:44

MueR

Admin Tweakers Discord

is niet lief

Lethalis schreef op donderdag 29 augustus 2019 @ 09:06:
Krijg net te horen dat jQuery toch nog in een legacy onderdeel van het project wordt gebruikt...
Snel refactoren dan ;) Scheelt toch weer een bak loze code.

Anyone who gets in between me and my morning coffee should be insecure.


  • Ed Vertijsment
  • Registratie: Juli 2014
  • Laatst online: 22-09 08:04
MueR schreef op donderdag 29 augustus 2019 @ 10:21:
[...]

Snel refactoren dan ;) Scheelt toch weer een bak loze code.
Meh, afhankelijk van hoe je build straat in elkaar zit en hoe/hoeveel jQuery je gebruikt kan dat reuze meevallen. Problematischer vind ik dat je, je code in een outdated format opschrijft.

Daarnaast, kun je lazy loaden. Detecteer of code nodig is met minimale code, laat vervolgens de echte module in die dat stukje code uitvoert. Doe dat per component en je laad eigenlijk nooit meer code in dan nodig. Vooral bij grote projecten scheelt dat aardig.

Onze huidige opzet doet ruwweg dit:

Per component (gewoon gespoed stukje html/css/js, hoeft geen React of iets te zijn):

- Constants.js: Een JS file met constanten, dit bevat o.a. NodeList van alle targets (of een lege NodeList indien het component niet gebruikt wordt op een pagina.
- Index.js: deze wordt in de main module opgenomen en importeert enkel de NodeList, indien deze een lengte > 0 heeft wordt de specifieke bundel ingeladen.
- Bundle.js de daadwerkelijke code inclusief alle dependencies, wordt dus enkel geladen indien nodig.

Van elke bestand worden alle ongebruikte codepaden gedropt dus. Netto blijven er dus N kleine modules over die enkel ingeladen worden indien nodig. Je gaat dus van een situatie waarin je in 1 request alle code inlaad naar een situatie waarin met enkele requests een klein deel van de code inlaad.

De enige nadelen hiervan zijn enkele regels detectiecode extra en de (met http2 minimale) overhead van meerdere requests. Maar dit effect kun je verder reduceren met een fatsoenlijk gebruik van een CDN. Niet wat het onder de streep negatief doet uitkomen.

Acties:
  • +2 Henk 'm!

  • BramV
  • Registratie: Augustus 2007
  • Laatst online: 12:22
Vind het gedoe over bundlesize in een bedrijfsapplicatie zwaar overdreven.

In mijn geval Angular laadt het ondanks alles (1-10MB) toch vaak binnen 1 of 2 seconden (ook als ik browsercache uitzet etc). Dmv lazy loading worden module's , nog niet nodig, in de achtergrond geladen zodat er bij aanroep geen hikjes zijn.

Bedrijfsapplicatie's worden, als het goed is niet de hele dag opnieuw gestart. Dus al zou het zelf 5-10 seconden zijn dan maakt het ook niet niet veel uit.

Oja Jquery is 30.4 KB . https://code.jquery.com/jquery-3.4.1.min.js, gaat nergens over..

Acties:
  • +4 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Ik vind dat bundle-size gedoe ook maar gewauwel. Al paar keer gezien dat developers keihard aan het optimizen zijn om de bundle size maar klein te houden en dan vervolgens bij laden van de pagina wordt er even 8MB aan plaatjes en mooie backdrops binnengeharkt....

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • +1 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 12:45
@armageddon_2k1 ik geef je deels gelijk. Als je het al optimaliseert moet je het natuurlijk goed doen. Maar het is nooit slecht als je als developer gewoon bedenkt wat de impact is van jou keuze. Dat die keuze teniet gedaan word door de ux designer staat daar los van

Strava | AP | IP | AW


Acties:
  • +1 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
BramV schreef op donderdag 29 augustus 2019 @ 13:55:
Vind het gedoe over bundlesize in een bedrijfsapplicatie zwaar overdreven.

In mijn geval Angular laadt het ondanks alles (1-10MB) toch vaak binnen 1 of 2 seconden (ook als ik browsercache uitzet etc). Dmv lazy loading worden module's , nog niet nodig, in de achtergrond geladen zodat er bij aanroep geen hikjes zijn.
Het feit dat die app snel laadt middels lazy loading, is omdat iemand zich juist bezig gehouden heeft met 'het gedoe over bundlesize' en de initiële bundle-size verkleint heeft door delen af te splitsen naar async lazy-loaded chunks.

Je haalt je eigen argument hier dus onderuit.
Die versie van jQuery is 86.08 KB groot. Jij bent aan het kijken naar een gzip-compressed bestandsgrootte, denk ik. Gzip verkleint wel de grootte van de download, maar helpt niet met het parsen of uitvoeren van grote JS files.

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 09:44

MueR

Admin Tweakers Discord

is niet lief

En bedenk vooral dat heel jquery zich in de window namespace laadt, waardoor het dus ook allemaal in het geheugen komt. En zoals ik zei, zeker wanneer het niet echt nodig is, zoals bijvoorbeeld wanneer er een ander dom controlling framework is of wanneer je maar een paar simpele dingen moet doen.

Anyone who gets in between me and my morning coffee should be insecure.


  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 12:28
Ik ben wel benieuwd wat er komende tijd gaat gebeuren nu WebAssembly steeds meer mainstream wordt. Zoals ik eerder in dit topic al meldde ben ik niet per se fan van SPA's, maar als ik dan toch een interactieve webapplicatie moet maken...

Stel even dat je voor je backend primair Go gebruikt, en al je werknemers ook primair Go beheersen. Dan is het wellicht wel heel chill als diezelfde mensen ook 'ineens' een web-frontend applicatie in Go kunnen schrijven. Natuurlijk moet je dan wel snappen hoe een DOM werkt en wellicht dat je nog wel iemand nodig hebt die iets weet van CSS etc. Toch denk ik dat dit wel een simpelere tech stack oplevert en op lange termijn wat kan opleveren.

Voorlopig is het een fantasie, wacht ik ondertussen geduldig af totdat (if ever) Vugu een stabiel iets wordt.

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


  • Ed Vertijsment
  • Registratie: Juli 2014
  • Laatst online: 22-09 08:04
armageddon_2k1 schreef op donderdag 29 augustus 2019 @ 15:25:
Ik vind dat bundle-size gedoe ook maar gewauwel. Al paar keer gezien dat developers keihard aan het optimizen zijn om de bundle size maar klein te houden en dan vervolgens bij laden van de pagina wordt er even 8MB aan plaatjes en mooie backdrops binnengeharkt....
1 probleem fixen is natuurlijk beter dan geen. Iig proberen wij voor release toch alles iig enigszins te optimaliseren (backend+frontend)

Acties:
  • +2 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Ik vind de discussie over die bundle sizes nogal theoretisch. Gebruikers 'storen' zich over het algemeen veel meer aan round-trips (of gewoon een brakke applicatie) dan over de initiele load. Dat een complexe front-office applicatie er 1-2 seconden over doet om volledig geladen te zijn (en time to first paint is meestal ook veel minder) is gewoon 'goed'.

https://niels.nu


Acties:
  • +2 Henk 'm!

  • knarfyboy
  • Registratie: November 2001
  • Laatst online: 16-09 14:14
Loop zelf al enige tijd te bedenken of ik wel zo nodig een front-end framework moet gaan leren. En tot nu toe denk ik steeds, heb ik het wel echt nodig?

In de loop der jaren heb ik een eigen manier van werken ontwikkeld, wat ik zelf echt heel erg prettig vind werken en ik heb eenvoudige websites tot complexe webapplicaties gebouwd.

In mijn huidige manier van werken gebruik ik een eigen rest api, draaiend in php (de regelt eigenlijk alles, routing, content ophalen, files uploaden, authentication, sass compilen, webfont loading, caching laag, noem maar op), en aan mijn frontend bestaat voornamelijk uit basic html/php vanilla javascript componenten.

Gisteren heb toevallig ik een workshop gehad om met Gatsby en React een static website te deployen in Aws, waarbij de data via graphql wordt ingeladen. Maar jezus zeg, wat een werk moet je verzetten om de meest eenvoudige zaken draaiend te krijgen, in mijn ogen. npm install hier, import daar, en dan heb ik het nog niet eens over de grootte, 200 mb aan packages die nodig waren om de meest basic dingen voor elkaar te krijgen. Tuurlijk worden die niet geladen bij de gebruiker, maar hoe groot wil je het hebben? En dan het builden/ transpilen van alle jscode nog, wat eigenlijk periodiek moet gebeuren.

De manier waarop je react schrijft, ik vind het echt enorme onoverzichtelijke lappen code, en ik kan er niet aan wennen. Ik had dezelfde functionaliteit (we bouwden een soort fotoalbum upload/like app) binnen een paar uur volledig werkend gehad in een docker container met gewoon “ouderwetse” code draaiend op nginx/php/sql/certbot, in plaats van een hele dag aan de gang met de commandline en in js files lopen ploeteren en alles aan elkaar knopen.

Het enige wat ik wel handig vond aan react was de state, maargoed dan trigger ik via vanilla js maar wat functies.

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 12:45
knarfyboy schreef op donderdag 5 september 2019 @ 00:52:
Loop zelf al enige tijd te bedenken of ik wel zo nodig een front-end framework moet gaan leren. En tot nu toe denk ik steeds, heb ik het wel echt nodig?

In de loop der jaren heb ik een eigen manier van werken ontwikkeld, wat ik zelf echt heel erg prettig vind werken en ik heb eenvoudige websites tot complexe webapplicaties gebouwd.

In mijn huidige manier van werken gebruik ik een eigen rest api, draaiend in php (de regelt eigenlijk alles, routing, content ophalen, files uploaden, authentication, sass compilen, webfont loading, caching laag, noem maar op), en aan mijn frontend bestaat voornamelijk uit basic html/php vanilla javascript componenten.

Gisteren heb toevallig ik een workshop gehad om met Gatsby en React een static website te deployen in Aws, waarbij de data via graphql wordt ingeladen. Maar jezus zeg, wat een werk moet je verzetten om de meest eenvoudige zaken draaiend te krijgen, in mijn ogen. npm install hier, import daar, en dan heb ik het nog niet eens over de grootte, 200 mb aan packages die nodig waren om de meest basic dingen voor elkaar te krijgen. Tuurlijk worden die niet geladen bij de gebruiker, maar hoe groot wil je het hebben? En dan het builden/ transpilen van alle jscode nog, wat eigenlijk periodiek moet gebeuren.

De manier waarop je react schrijft, ik vind het echt enorme onoverzichtelijke lappen code, en ik kan er niet aan wennen. Ik had dezelfde functionaliteit (we bouwden een soort fotoalbum upload/like app) binnen een paar uur volledig werkend gehad in een docker container met gewoon “ouderwetse” code draaiend op nginx/php/sql/certbot, in plaats van een hele dag aan de gang met de commandline en in js files lopen ploeteren en alles aan elkaar knopen.

Het enige wat ik wel handig vond aan react was de state, maargoed dan trigger ik via vanilla js maar wat functies.
Er niemand denk ik die jou verplicht om die kant op te gaan. Als dit voor jou goed werkt en voor je klanten. Waarom dan overstappen? Right tool for the job

Strava | AP | IP | AW


  • q-enf0rcer.1
  • Registratie: Maart 2009
  • Laatst online: 00:45
Angular, React en Vue zijn allemaal mooie front-end technieken. Natuurlijk zijn dit niet altijd de juiste keuzes. Je moet je afvragen wat je doel is. Is het doel om zo snel mogelijk een complete SPA te bouwen, dan is Angular als framework de beste keuze. Wil je een bestaand project voorzien van wat JavaScript magie dan kun je denken aan React of Vue, dit zijn bibliotheken bedoeld om te integreren binnen bestaande projecten. Webcomponenten timmeren inmiddels ook aan de weg. Zo werk ik nu met StencilJS, een project om eenvoudig webcomponenten te kunnen maken. Wellicht is dat voor jou als webdevelopment dinosaurus wat interessanter omdat het instapniveau daarvan wat lager is.

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 12:45
q-enf0rcer.1 schreef op donderdag 5 september 2019 @ 19:35:
Angular, React en Vue zijn allemaal mooie front-end technieken. Natuurlijk zijn dit niet altijd de juiste keuzes. Je moet je afvragen wat je doel is. Is het doel om zo snel mogelijk een complete SPA te bouwen, dan is Angular als framework de beste keuze. Wil je een bestaand project voorzien van wat JavaScript magie dan kun je denken aan React of Vue, dit zijn bibliotheken bedoeld om te integreren binnen bestaande projecten. Webcomponenten timmeren inmiddels ook aan de weg. Zo werk ik nu met StencilJS, een project om eenvoudig webcomponenten te kunnen maken. Wellicht is dat voor jou als webdevelopment dinosaurus wat interessanter omdat het instapniveau daarvan wat lager is.
niet om het een of ander maar zijn Angular en React etc nou ook niet eerst begonnen met dat juist in het achterhoofd?

Strava | AP | IP | AW


Acties:
  • +1 Henk 'm!

  • q-enf0rcer.1
  • Registratie: Maart 2009
  • Laatst online: 00:45
Webgnome schreef op donderdag 5 september 2019 @ 19:40:
[...]


niet om het een of ander maar zijn Angular en React etc nou ook niet eerst begonnen met dat juist in het achterhoofd?
Simpel gezegd; nee. Er is wel gekozen voor een component structuur in het geval van angular maar er is in tegenstelling tot Stencil.js niet gekozen om zo dicht mogelijk bij echte webcomponents te blijven. Dat is wel het geval met Polymer want ongeveer in dezelfde tijd ook door Google is ontwikkeld. Wat React betreft tref je hier een uitleg: https://reactjs.org/docs/web-components.html

Dus ondanks dat je feitelijk wel met custom elementen werkt zijn dit geen web components. Daar zit jouw verwarring.

Acties:
  • +4 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
@knarfyboy Het enige wat ik alarmerend zou vinden aan jouw verhaal als klant dat ik heel vaak lees dat je ee "eigen manier.." hebt ontwikkeld door de jaren heen. Dat gaan alle alarmbellen af, want wat nou als jij, om wat voor reden dan ook, niet meer betrokken bent bij de ontwikkeling en er een paar major issues zijn? Is alle documentatie op orde? Is de veiligheid op orde en/of geaudit? Wellicht heb je dat allemaal goed geregeld en dan is het helemaal prima natuurlijk.

Dit staat natuurlijk los van de Spa discussie en komen we meer in het domein van framework gebruik, NIH, etc.

Een van m'n projecten is nu het onderhoud van een legacy PHP app die door iemand vanaf de grond af aan opgebouwd is en een heel eigen framework. Niet leuk. In mijn oogpunt is 1 developer nooit genoeg om alle facetten van de hele keten in een framework goed genoeg te bouwen, te onderhouden en te ontwikkelen. Als ontwikkelaar heb je ook de verplichting rekening te houden met de mensen die na je komen. Juist daar helpt het gebruik van libraries en standaard manier van werken.

Als we wat meer teruggaan naar de discussie van de React JSX syntax is dat in mijn ogen gewoon gewenning. Als je ergens een paar maanden mee werkt zijn je hersenen wel weer gewend aan andere coding styles...

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • +2 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
q-enf0rcer.1 schreef op donderdag 5 september 2019 @ 19:35:
Wellicht is dat voor jou als webdevelopment dinosaurus wat interessanter omdat het instapniveau daarvan wat lager is.
De grap is dat ik nog geen 4 weken later alweer volop met Angular aan het programmeren ben _O-

Het is meer dat ik er tegenaan hik als ik het een tijdje niet meer heb gedaan, omdat er zoveel moving parts zijn.

Maar zodra ik er weer in zit, dan gaat het eigenlijk vanzelf.
armageddon_2k1 schreef op zondag 8 september 2019 @ 08:29:
@knarfyboy Het enige wat ik alarmerend zou vinden aan jouw verhaal als klant dat ik heel vaak lees dat je ee "eigen manier.." hebt ontwikkeld door de jaren heen. Dat gaan alle alarmbellen af, want wat nou als jij, om wat voor reden dan ook, niet meer betrokken bent bij de ontwikkeling en er een paar major issues zijn? Is alle documentatie op orde? Is de veiligheid op orde en/of geaudit? Wellicht heb je dat allemaal goed geregeld en dan is het helemaal prima natuurlijk.
10 jaar geleden vond ik het nodig om mijn eigen object mapper te schrijven, een soort light weight ORM.

Vorige week moest ik een groot project dat deze mapper gebruikt nieuw leven inblazen. En eerlijk gezegd denk ik al de hele tijd "waarom heb ik dit ooit gedaan?". Tegenwoordig zou ik gewoon Dapper kiezen. En als dat niet kan iets anders, maar altijd proberen te voorkomen dat ik het zelf ga zitten doen.

En als ik ergens niet helemaal happy mee ben, er simpelweg interfaces voor definiëren, zodat het later makkelijker te vervangen is door iets anders.

Zodat ik (of iemand anders) niet 10 jaar later met de gebakken peren zit. Door mijn keuzes 10 jaar geleden is het project anno nu nauwelijks te porteren naar .NET Core bijvoorbeeld. Toch jammer.

[ Voor 56% gewijzigd door Lethalis op 10-09-2019 12:36 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • +6 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Lethalis schreef op dinsdag 10 september 2019 @ 12:25:
Zodat ik (of iemand anders) niet 10 jaar later met de gebakken peren zit. Door mijn keuzes 10 jaar geleden is het project anno nu nauwelijks te porteren naar .NET Core bijvoorbeeld. Toch jammer.
Dat je dit gewoon toegeeft, dat die keuzes verkeerd waren, maakt het al dat je lichtjaren voorloopt op zo veel 'senior' 'developers' die gewoon dom blijven doen alsof het een goed idee was en zich in discussies compleet ingraven in hun eigen kleine koninkrijkje van shit.

https://niels.nu


  • Crazy-
  • Registratie: Januari 2002
  • Laatst online: 22-09 08:33

Crazy-

Best life ever

Hydra schreef op dinsdag 10 september 2019 @ 13:22:
[...]


Dat je dit gewoon toegeeft, dat die keuzes verkeerd waren, maakt het al dat je lichtjaren voorloopt op zo veel 'senior' 'developers' die gewoon dom blijven doen alsof het een goed idee was en zich in discussies compleet ingraven in hun eigen kleine koninkrijkje van shit.
Door nieuwe inzichten, volwassenheid & jaren ervaring sla ik mezelf ook wel eens voor de kop: wat had ik gedronken toen ik dat maakte? 😅

Het hoort er bij; je maakt alleen of als team een keuze: niet alles is later nog steeds de beste of goede keuze geweest.

12,85kWp - ZB 7,5m2/400l - 5kW Pana H WP (CV&SWW) - 13,8kWh accu


Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Lethalis schreef op dinsdag 10 september 2019 @ 12:25:
[...]

De grap is dat ik nog geen 4 weken later alweer volop met Angular aan het programmeren ben _O-

Het is meer dat ik er tegenaan hik als ik het een tijdje niet meer heb gedaan, omdat er zoveel moving parts zijn.

Maar zodra ik er weer in zit, dan gaat het eigenlijk vanzelf.


[...]

10 jaar geleden vond ik het nodig om mijn eigen object mapper te schrijven, een soort light weight ORM.

Vorige week moest ik een groot project dat deze mapper gebruikt nieuw leven inblazen. En eerlijk gezegd denk ik al de hele tijd "waarom heb ik dit ooit gedaan?". Tegenwoordig zou ik gewoon Dapper kiezen. En als dat niet kan iets anders, maar altijd proberen te voorkomen dat ik het zelf ga zitten doen.

En als ik ergens niet helemaal happy mee ben, er simpelweg interfaces voor definiëren, zodat het later makkelijker te vervangen is door iets anders.

Zodat ik (of iemand anders) niet 10 jaar later met de gebakken peren zit. Door mijn keuzes 10 jaar geleden is het project anno nu nauwelijks te porteren naar .NET Core bijvoorbeeld. Toch jammer.
Meh, je hebt er 10 jaar van kunnen genieten, dat is een eeuwigheid. Nu een stuk rewriten mag dan best, was Dapper er 10 jaar geleden al?

Nu is alles docker en nog 10 andere buzzwords, shit happens.

Less alienation, more cooperation.


  • Immutable
  • Registratie: April 2019
  • Laatst online: 21-09 13:20
Ook even respect inderdaad dat je gewoon toegeeft dat je in het verleden foute keuzes maakt en ervan leert. Dat soort houding ben ik zelf heel erg fan van. Waren er maar meer van dat soort mensen. Als je daarvan een team had, dan heb je een team die hun fouten durft toe te geven en zichzelf in de toekomst durft te verbeteren. Dan heb je vaak een team die erg snel fouten inziet en vooruit gaat, zonder elkaar de grond in te drukken. Vraagtekens bij je eigen werk stellen is voor mij wel een vorm van competent gedrag bij iemand.

Maar over het web met Back-End server side rendering, versus Single Page Application. Ik denk zelf dat er nog een ronde aan komt die de SPA zoals we nu kennen in Javascript weer gaat omblazen.
Uiteindelijk blijft Server-Side Rendering een solide techniek die ook de WebAssembly fase zal overleven. SPA zoals we die kennen niet.(heb het over al die Javascript frameworks)

Ik persoonlijk kijk al erg uit naar dat ik mijn gehele applicatie zowel back-end als front-end kan programmeren in C++. (Rust is daar ook vooruitstrevend in.)
Dit zal straks ook wel kunnen met C# en Java. Maar C++ en Rust zijn de voorlopers.

Het is nog niet doorgebroken, omdat volgens mij de DOM en andere browser api's not niet toegankelijk zijn voor WebAssembly.
Uiteindelijk krijg je dan een C++20 Module voor bijvoorbeeld de DOM, en dan kan je gewoon je front-end in C++ schrijven en ook je back-end. :) Dat lijkt mij echt heerlijk.
Vooral met Moderne C++17 en hoger.

Maar dan maakt het niet zoveel meer uit, je kan gewoon je favoriete taal pakken die WebAssembly uitspuugt vanuit jou gewenste taal. Alleen zal de ene taal meer performance kennen, en de andere taal minder developertijd kosten.

Het probleem met talen die "systemen" nodig hebben zoals een Garbage Collector. Of een virtual machine.. etc. zullen vaak groter uitpakken. Daarom zijn lagere talen met hoge abstracties zoals C++ en Rust zo populair voor webassembly kleinere file + meer performance. Maar ze gaan volgens mij een native Garbage Collector implementeren in webassembly als OPT-IN.

Maar goed, dat is toekomst muziek. Volgens mij is het betreft Server Side rendering, of SPA gewoon de keuze of het meer een "applicatie" is met veel dynamisch gedrag op de website zelf.
Bij veel andere type website zou ik inderdaad kiezen voor server-side rendering, met zo weinig mogelijk Javascript. Het is dus gewoonweg een afweging. Het ene is niet beter als het andere, het heeft ieders zijn eigen doel.

  • Lethalis
  • Registratie: April 2002
  • Niet online
Immutable schreef op donderdag 19 september 2019 @ 15:40:
Ik persoonlijk kijk al erg uit naar dat ik mijn gehele applicatie zowel back-end als front-end kan programmeren in C++. (Rust is daar ook vooruitstrevend in.)
Dit zal straks ook wel kunnen met C# en Java. Maar C++ en Rust zijn de voorlopers.
Mijn indruk is dat het heel handig is voor reken intensieve taken. Zo zou je bijvoorbeeld een video codec in C++ kunnen maken die compileert naar wasm.

Vervolgens kan iedereen video's met jouw codec direct bekijken, zonder dat deze geïnstalleerd hoeft te zijn op de computer.

Dat vind ik persoonlijk wel "nieuw" en opent allerlei mogelijkheden voor content providers om hun eigen DRM oplossingen aan te bieden etc.

Maar een hele web applicatie bouwen in C++ zal niet in zo'n vaart lopen, omdat er simpelweg weinig C++ developers zijn (tov C#, Java, Python, Golang, etc).

De kans is dus groot dat een andere taal populairder zal zijn.

Wie bouwt er anno nu zijn rest api in C++ ? :)

Ik weet dat het kán, maar echt gebruikelijk is het niet.

PS
Hoe is de markt voor C++ developers eigenlijk in Nederland? ;) Ik werk dan wel als .Net developer, maar heb een achtergrond in C/C++. Soms vraag ik me weleens af of het niet beter is om iets te doen dat minder mensen doen / kunnen.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Immutable schreef op donderdag 19 september 2019 @ 15:40:
Ik persoonlijk kijk al erg uit naar dat ik mijn gehele applicatie zowel back-end als front-end kan programmeren in C++. (Rust is daar ook vooruitstrevend in.)
Dit zal straks ook wel kunnen met C# en Java. Maar C++ en Rust zijn de voorlopers.

Het is nog niet doorgebroken, omdat volgens mij de DOM en andere browser api's not niet toegankelijk zijn voor WebAssembly.
Rust heeft nu natuurlijk al crates die bindings hebben naar de DOM en WebAPI's:
- js-sys (raw bindings naar JS voor wasm_bindgen)
- web-sys (raw bindings voor veel Web API's voor wasm_bindgen)
- stdweb welke uiteindelijk een 'idiomatic' Rust API rond web-sys moet worden

Dus er is al lang het e.e.a. mogelijk. Je kan eigenlijk al een hele backend + frontend in Rust schreven. Echter doordat het geheel nogal complex is moet je goed opletten om strakke performance te halen. Vooral complexe types / struct over de WASM - JS boundary krijgen is niet erg performant nog. WASM heeft natuurlijk alleen hele basic type support, wat logisch is.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Sandor_Clegane schreef op woensdag 18 september 2019 @ 22:34:
[...]
Meh, je hebt er 10 jaar van kunnen genieten, dat is een eeuwigheid. Nu een stuk rewriten mag dan best, was Dapper er 10 jaar geleden al?

Nu is alles docker en nog 10 andere buzzwords, shit happens.
Ik had er gewoon goed aan gedaan om een standaard library te kiezen (of ik hem nou mooi vind of niet), omdat ik dan "gratis" gebruik maak van het werk dat anderen stoppen in het onderhouden van die library.

Nu heb ik zelf een micro ORM library waarvan ik allang geen zin meer heb om die te onderhouden. Hij zit mij alleen maar in de weg. En dat is ook waar @Hydra op doelt. Dat veel programmeurs allemaal custom libraries bouwen door de jaren heen voor zaken waar dat helemaal niet nodig was geweest.

"hun eigen kleine koninkrijkje van shit" :D

Ik vond in 2009 dat nhibernate en EF veel te veel overhead gaven en wou iets simpelers. Dapper en veel andere micro ORM's waren er toen nog niet, dus ging ik mijn eigen micro ORM schrijven en door de jaren heen werden ook steeds meer projecten afhankelijk van die library.

Maar je kunt je dus ook afvragen waarom miljoenen programmeurs wél gewoon met nhibernate en EF uit de voeten konden en hun aandacht volledig konden richten op het bouwen van nieuwe functionaliteit voor hun werkgever. En waarom ik per se een eigen micro ORM moest schrijven.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Oh, ik snap heel goed waar je op doelt, ik moet ook zeggen dat je eigen ORM schrijven iets anders is dan ik dacht uit je post op te maken ( object mapper ) maar dat zal mijn gebrek zijn.
Lethalis schreef op maandag 23 september 2019 @ 10:05:
[...]

Ik had er gewoon goed aan gedaan om een standaard library te kiezen (of ik hem nou mooi vind of niet), omdat ik dan "gratis" gebruik maak van het werk dat anderen stoppen in het onderhouden van die library.

Nu heb ik zelf een micro ORM library waarvan ik allang geen zin meer heb om die te onderhouden. Hij zit mij alleen maar in de weg. En dat is ook waar @Hydra op doelt. Dat veel programmeurs allemaal custom libraries bouwen door de jaren heen voor zaken waar dat helemaal niet nodig was geweest.

"hun eigen kleine koninkrijkje van shit" :D

Ik vond in 2009 dat nhibernate en EF veel te veel overhead gaven en wou iets simpelers. Dapper en veel andere micro ORM's waren er toen nog niet, dus ging ik mijn eigen micro ORM schrijven en door de jaren heen werden ook steeds meer projecten afhankelijk van die library.

Maar je kunt je dus ook afvragen waarom miljoenen programmeurs wél gewoon met nhibernate en EF uit de voeten konden en hun aandacht volledig konden richten op het bouwen van nieuwe functionaliteit voor hun werkgever. En waarom ik per se een eigen micro ORM moest schrijven.
Edit: nu ik er nog wat langer over nadenk, ik weet of ik het zo zwart wit zou stellen. EF in de eerste versies was nu niet echt om over naar huis te schrijven en nHibernate is ook redelijk complex en zwaar. De cognitive load van beiden is best hoog durf ik wel te stellen.

Komt nog eens bij dat je een redelijk zware afhankelijkheid neemt op een bibliotheek waarvan je maar moet hopen dat de visie van de ontwikkelaars strookt met die van jou, nu en in de toekomst. Dit wil nog wel eens een heikel punt zijn.

Een simpele DB laag met ADO.net is misschien wel veel code, maar het is wel redelijk simpel. En niet simpel als in dat het dom is, maar meer dat het gemakkelijk te begrijpen is wat je code allemaal doet.

Een methode die een object persisteert naar een DB is redelijk te behappen, het gevaar schuilt hem er weer in dat als je dit vier keer hebt gedaan dat je gaat denken: "Dat kan ik ook wel generiek maken" dus dan krijg je ineens Store<T> en ga je allerlei dingen met reflection doen om de velden de uit te lezen zodat je on the fly het juiste db type kunt toewijzen. :)

Aan de andere kant, EF en andere ORMs zijn ook gewoon een zwarte doos en hetgeen dat ze pretenderen te doen, het relationele weghalen, gaat ook niet altijd op. Leaky abstractions enzo. DBcontexts die ineens overal opduiken etc. etc.

Zo kunnen we nog wel even doorgaan, IOC containers aspect oriented programming enz. enz.

Dus ja, hangt ervan af zeg maar. :)

[ Voor 87% gewijzigd door Sandor_Clegane op 23-09-2019 15:43 ]

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Sandor_Clegane schreef op maandag 23 september 2019 @ 14:50:
Een methode die een object persisteert naar een DB is redelijk te behappen, het gevaar schuilt hem er weer in dat als je dit vier keer hebt gedaan dat je gaat denken: "Dat kan ik ook wel generiek maken" dus dan krijg je ineens Store<T> en ga je allerlei dingen met reflection doen om de velden de uit te lezen zodat je on the fly het juiste db type kunt toewijzen. :)
BaseManager<T> en in een latere versie EntityCollection<T> was het geworden ;)

Maar inderdaad, je bouwt er steeds meer dingen bij om het jezelf makkelijker te maken... en vervolgens kom je erachter dat je in grote lijnen hetzelfde aan het bouwen bent als nhibernate of EF. Want er komt steeds iets nieuws bij. Change tracking bijvoorbeeld. Al mijn entities erven over van een BaseEntity en ik had ook al plannen ooit om met virtuele proxies te werken (met reflection.emit overerven van de entity en change tracking toe te voegen, zoals dat bij diverse ORM libraries gaat).

En tsja, R in ORM is ook zo'n dingetje. Dus voor je het weet, begin je alweer aan relaties vastleggen met attributes en ga je achter de schermen SQL generen met JOIN's zodat je classes kan vullen met N levels diep.

Allemaal zonde van de tijd...

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Lethalis schreef op maandag 23 september 2019 @ 17:03:
[...]

Allemaal zonde van de tijd...
Ach, dat weet ik niet, als je nHibernate had gedaan had je nu grote kans gehad dat je het naar EF moest ombouwen aangezien dat de zegen van MS heeft.

Alles is relatief zeg maar. :)

Denk dat het punt meer is dat je er niet aan ontkomt, voortschrijdend inzicht zeg maar. Maar belangrijk is ook dat je best kritisch mag blijven. Ik gebruik zelf Unity veel en ook daar kun je hetzelfde punt maken. Neemt niet weg dat doordat je op de "schouders van reuzen" staat je ook ver kan vallen. :)

Je moet je ook conformeren aan hun visie. Of dat al dan niet de juiste is, moet je voor jezelf uitmaken.

En dat is niet "gratis", goed je hebt er het werk niet van qua programmeren maar je moet je er wel weer in verdiepen en thuis in geraken.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Sandor_Clegane schreef op maandag 23 september 2019 @ 18:58:
[...]
Ach, dat weet ik niet, als je nHibernate had gedaan had je nu grote kans gehad dat je het naar EF moest ombouwen aangezien dat de zegen van MS heeft.

Alles is relatief zeg maar. :)
March 26, 2018
NHibernate 5.1 is released with the support of .NET Core 2.0 and .NET Standard 2.0.


May 8, 2019
EF 6.3 Preview supports .NET Core 3.0


Ik snap jouw punt van voortschrijdend inzicht wel, maar je ziet nu dus dat het in beide gevallen vanzelf goed was gekomen.

Met NHibernate zelfs sneller dan met EF _/-\o_

Maar om terug op het oorspronkelijke topic te komen... het enige dat frontend development zo eng maakt, is de snelheid waarmee alles verandert. Je hoopt gewoon dat als je nu een Angular of React frontend bouwt, dat het nog makkelijk 5 jaar mee kan, het liefst 10 jaar.

Dat kun je een eeuwigheid noemen, maar de meeste projecten waar ik aan werk, gaan makkelijk zolang mee :/ Ik werk nu alweer ruim 12 jaar voor dezelfde werkgever en bijna alles waar ik aan gewerkt heb - op een paar uitzonderingen na - wordt nog steeds dagelijks gebruikt.

En ik haat het om dingen opnieuw te moeten bouwen.

Misschien moet ik dan niet zolang blijven plakken ergens, maar toch :D

Daarnaast kun je tegenwoordig steeds meer ermee. Dus potentiële Angular / React apps die je nu bouwt, vervangen misschien wel volledig Windows client applicaties met meer dan 100 schermen etc. Dan ben je rustig 2 a 3 jaar aan het bouwen voordat je die app überhaupt in een werkbare staat hebt.

Het zou jammer zijn als al dat harde werk al obsolete is, voordat je het überhaupt opgeleverd hebt.

[ Voor 46% gewijzigd door Lethalis op 23-09-2019 23:08 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Toevallig kom ik dit topic tegen, ben zelf met een project bezig waar iemand alles opgezet heeft in plain Javascript & CSS icm Webpack. Werkt prima en grotendeels goed gedocumenteerd hoe het gebruikt moet worden.

Echter was het feature complete voor de functionaliteit die toen gebouwd moest worden, nu moet er nieuwe functionaliteit aan toegevoegd worden die andere developers dus hier aan toe mogen voegen omdat de persoon die dit bedacht heeft er niet meer werkzaam is.

Dit kost dus extra tijd terwijl als bijvoorbeeld Vue gebruikt was dit er kant en klaar ingezeten had (en ook goed gedocumenteerd voor andere developers). Helemaal als je vaak met wisselende (externe) team samenstelling werkt is het slimmer om dingen van de plank te gebruiken dan een hoop custom op te zetten.

Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
@GrooV Maar is dat niet altijd het probleem? Zelfs als Vue gebruikt was dan kost het altijd nog moeite om 'er in te komen' en kost het extra tijd. Dat geldt ook voor als de ontwikkelaar er nog was geweest, maar er een langere tijd tussen had gezeten waarschijnlijk.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • kevintjeb
  • Registratie: Juli 2013
  • Laatst online: 10-01 14:42
Ik wilde dat ook net aanhalen. Ik hoor namelijk van beide kampen een soort van altijd hetzelfde..

'developer X koos voor framework Y. Nu is developer X weg en moeten we framework Y leren. Ik ben beter met Z, dus framework Z had veel sneller geweest'..?

Acties:
  • +2 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

kevintjeb schreef op dinsdag 24 september 2019 @ 08:20:
Ik wilde dat ook net aanhalen. Ik hoor namelijk van beide kampen een soort van altijd hetzelfde..

'developer X koos voor framework Y. Nu is developer X weg en moeten we framework Y leren. Ik ben beter met Z, dus framework Z had veel sneller geweest'..?
Tel daar het not-invented-here syndroom bij op, et voila. Iedere wisseling van de wacht een nieuw framework.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 23-09 18:21

Sebazzz

3dp

Lethalis schreef op maandag 23 september 2019 @ 22:47:
[...]

Met NHibernate zelfs sneller dan met EF _/-\o_
EF Core 1.0 ondersteunde gewoon .NET Core hoor ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Alleen is het ecosysteem van framework X een stuk groter dan zelfbouw framework Y, denk alleen al aan compatibiliteit, opgeloste bugs, documentatie en vragen op stackoverflow.

En functionaliteit toevoegen aan een framework wat nooit groot gaat worden is in mijn ogen zonde van de tijd. Af gezien al van de tijd die het initieel gekost heeft en die het kost om te blijven onderhouden in de toekomst als Chrome versie XXX ergens een breaking change heeft zitten. Een framework bouw je zelf om een probleem op te lossen, niet omdat je graag zelf iets wil uitvinden

Over 5 jaar is echt nog wel ergens een Vue/Angular/React developer te vinden.

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Sebazzz schreef op dinsdag 24 september 2019 @ 08:35:
[...]

EF Core 1.0 ondersteunde gewoon .NET Core hoor ;)
Maar EF Core is een complete rewrite van EF die niet feature complete is.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Matis schreef op dinsdag 24 september 2019 @ 08:21:
Tel daar het not-invented-here syndroom bij op, et voila. Iedere wisseling van de wacht een nieuw framework.
Bij de klant hier moeten we iets bouwen voor een ander team. Daar werd ons verteld dat we gewoon sowieso maar een 'dirty hack' moesten schrijven omdat, wat we ook opleveren, het sowieso weggegooid gaat worden. :(

Als ZZPer is het natuurlijk prima dat mensen graag enorm veel tijd en geld wegsmijten maar als software engineer zit ik hier regelmatig te facedesken.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • hellum
  • Registratie: Oktober 2007
  • Laatst online: 12-09 17:03
Lethalis schreef op maandag 23 september 2019 @ 10:05:
[...]

Ik had er gewoon goed aan gedaan om een standaard library te kiezen (of ik hem nou mooi vind of niet), omdat ik dan "gratis" gebruik maak van het werk dat anderen stoppen in het onderhouden van die library.

Nu heb ik zelf een micro ORM library waarvan ik allang geen zin meer heb om die te onderhouden. Hij zit mij alleen maar in de weg. En dat is ook waar @Hydra op doelt. Dat veel programmeurs allemaal custom libraries bouwen door de jaren heen voor zaken waar dat helemaal niet nodig was geweest.

"hun eigen kleine koninkrijkje van shit" :D

Ik vond in 2009 dat nhibernate en EF veel te veel overhead gaven en wou iets simpelers. Dapper en veel andere micro ORM's waren er toen nog niet, dus ging ik mijn eigen micro ORM schrijven en door de jaren heen werden ook steeds meer projecten afhankelijk van die library.

Maar je kunt je dus ook afvragen waarom miljoenen programmeurs wél gewoon met nhibernate en EF uit de voeten konden en hun aandacht volledig konden richten op het bouwen van nieuwe functionaliteit voor hun werkgever. En waarom ik per se een eigen micro ORM moest schrijven.
Mijn voorganger heeft hetzelfde gedaan, maar dan nog weer eens gebruikmakend van EF :'( Denk je dat je tegen EF praat, blijkt het uiteindelijk toch een ander framework te zijn.

Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Lethalis schreef op maandag 23 september 2019 @ 22:47:
[...]

Daarnaast kun je tegenwoordig steeds meer ermee. Dus potentiële Angular / React apps die je nu bouwt, vervangen misschien wel volledig Windows client applicaties met meer dan 100 schermen etc. Dan ben je rustig 2 a 3 jaar aan het bouwen voordat je die app überhaupt in een werkbare staat hebt.

Het zou jammer zijn als al dat harde werk al obsolete is, voordat je het überhaupt opgeleverd hebt.
Wat denk je zelf? ;)

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
GrooV schreef op dinsdag 24 september 2019 @ 08:44:
Alleen is het ecosysteem van framework X een stuk groter dan zelfbouw framework Y, denk alleen al aan compatibiliteit, opgeloste bugs, documentatie en vragen op stackoverflow.
Ik werk zelf met het kleinere en meer onbekende framework CanJS en verkies dat boven bijv. Vue.

Mijn ervaring is dat het niveau van vraag en antwoord voor dit soort frameworks voor 90% niveau "vraagje over PHP anno 1999" is; slecht en vaak fout. Je hebt er veel meer aan als je bijv regelrecht in een chat met de developers van het framework kunt stappen.
De metriek opgeloste bugs zegt ook niet veel over bugs die mogelijk nog in een product schuilen. Het enige wat 'veel bugs opgelost' zegt, is dat er veel zichtbaar gevonden zijn, wat eerder een negatief iets is en terug vertaalt naar een tekortkoming op het gebied van tests en secuurheid bij de ontwikkelaar.

Veel belangrijker is de snelheid waarmee een gerapporteerde bug opgepakt kan worden, en met hoeveel gemak er bijv. naar tussentijdse korte-termijn oplossingen gezocht kan worden. Tot dusver heb ik bij Vue 2 bugs gerapporteerd incl. reproductie stappen waar beiden 2 maanden lang niet eens op gereageerd is. De eerste is zonder boe-of-bah geautomatiseerd gesloten; de 2e werd met de hand gesloten met de claim dat het opgelost was in een nieuwere versie. Was niet het geval, dus een nieuwe bug geopend. 4 maanden of zo geen antwoord op gehad; dan maar direct één van de ontwikkelaar een at-je gedaan en nagevraagd waarom het zo moeilijk was om zelfs maar even antwoord te krijgen. Nu, alweer ongeveer 6 maanden later nog steeds geen antwoord.

Ondertussen heb ik drie bugs bij CanJS gerapporteerd met repro case; binnen een dag antwoord van één van de hoofdontwikkelaars; discussie over gehad; in één geval op de dag zelf nog een patch uitgerold gekregen en in een ander geval binnen een week of zo. (Iets complexere issue; vereiste ook uitrol van meerdere upgrades voor sub-packages.) Alleen de 3e staat nog open. Eigen schuld; mijn repro-case zat een bug in, waar ik pas veel later achter kwam.


Alles heeft z'n ups en z'n downs. Maar als ik hier zou moeten kiezen, kies ik toch niet voor de grotere frameworks met logge processen en turn-overs. Eerder voor de kleinere met een gedreven team er achter, wat down-to-earth mee denkt.

Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
R4gnax schreef op dinsdag 24 september 2019 @ 22:17:
[...]


Ik werk zelf met het kleinere en meer onbekende framework CanJS en verkies dat boven bijv. Vue.

Mijn ervaring is dat het niveau van vraag en antwoord voor dit soort frameworks voor 90% niveau "vraagje over PHP anno 1999" is; slecht en vaak fout. Je hebt er veel meer aan als je bijv regelrecht in een chat met de developers van het framework kunt stappen.
De metriek opgeloste bugs zegt ook niet veel over bugs die mogelijk nog in een product schuilen. Het enige wat 'veel bugs opgelost' zegt, is dat er veel zichtbaar gevonden zijn, wat eerder een negatief iets is en terug vertaalt naar een tekortkoming op het gebied van tests en secuurheid bij de ontwikkelaar.

Veel belangrijker is de snelheid waarmee een gerapporteerde bug opgepakt kan worden, en met hoeveel gemak er bijv. naar tussentijdse korte-termijn oplossingen gezocht kan worden. Tot dusver heb ik bij Vue 2 bugs gerapporteerd incl. reproductie stappen waar beiden 2 maanden lang niet eens op gereageerd is. De eerste is zonder boe-of-bah geautomatiseerd gesloten; de 2e werd met de hand gesloten met de claim dat het opgelost was in een nieuwere versie. Was niet het geval, dus een nieuwe bug geopend. 4 maanden of zo geen antwoord op gehad; dan maar direct één van de ontwikkelaar een at-je gedaan en nagevraagd waarom het zo moeilijk was om zelfs maar even antwoord te krijgen. Nu, alweer ongeveer 6 maanden later nog steeds geen antwoord.

Ondertussen heb ik drie bugs bij CanJS gerapporteerd met repro case; binnen een dag antwoord van één van de hoofdontwikkelaars; discussie over gehad; in één geval op de dag zelf nog een patch uitgerold gekregen en in een ander geval binnen een week of zo. (Iets complexere issue; vereiste ook uitrol van meerdere upgrades voor sub-packages.) Alleen de 3e staat nog open. Eigen schuld; mijn repro-case zat een bug in, waar ik pas veel later achter kwam.


Alles heeft z'n ups en z'n downs. Maar als ik hier zou moeten kiezen, kies ik toch niet voor de grotere frameworks met logge processen en turn-overs. Eerder voor de kleinere met een gedreven team er achter, wat down-to-earth mee denkt.
Ik heb dan weer een totaal andere ervaring met een Vue JS datepicker die ik toevallig precies had wat ik nodig had, in 1 dag opgelost. Scheelt ook als je het volledig reproduceerbaar maakt met een JSFiddle

Uiteraard kan je bij een opensource project geen support op bugs claimen, en gaat alles best effort. Het mooie er van is dat je zelf natuurlijk ook iets kan bijdragen mocht het echt blokkerend zijn. Developers doen echt wel hun best maar hebben ook maar 40 uur in een week zitten.

Kijk voor de gein maar eens hoeveel bugs er open staan bij de .NET projecten van Microsoft op Github

  • Accretion
  • Registratie: April 2014
  • Laatst online: 23-09 17:42

Accretion

⭐⭐⭐⭐⭐ (5/5)

Tegenwoordig heb je toch "web components", react en angular zijn alweer uit de tijd.

Achja, het is ook 'n beetje "whatever floats your boat", maar het is inderdaad zo dat het internet vol staat met half-gebakken blogjes die eigenlijk allemaal hetzelfde is omdat iedereen voor zijn 'portfolio' exact hetzelfde idee kopieert van een ander blog.

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Accretion schreef op woensdag 25 september 2019 @ 00:21:
Tegenwoordig heb je toch "web components", react en angular zijn alweer uit de tijd.

Achja, het is ook 'n beetje "whatever floats your boat", maar het is inderdaad zo dat het internet vol staat met half-gebakken blogjes die eigenlijk allemaal hetzelfde is omdat iedereen voor zijn 'portfolio' exact hetzelfde idee kopieert van een ander blog.
"Tegenwoordig" en "Uit de tijd"

React en webcomponents lossen andere problemen op en kunnen elkaar gewoon aanvullen ( https://reactjs.org/docs/web-components.html ). Volgens mij gaat het hiet ook mis bij dit soort "meningen".

Webcomponents zijn ook nog niet af, voor templating moet je kiezen tussen 5 verchillende lib's omdat de spec nog in draft is. Server side rendering is alleen mogelijk op een hacky manier. Voor state heb je nog steeds iets als Redux nodig, voor routing zal je ook een router mogen kiezen.

Verder ondersteund Apple niet alle features van Webcomponents ( https://github.com/w3c/we...09#issuecomment-230700060 ) en om nog maar te zwijgen over IE11 support.

Dus als je een state, SSR, compatibiliteit of wat andere spannendere features wil zit je nog steeds vast aan tig frontend libraries.

Dat WC's zeker toekomst hebben zal niemand ontkennen maar om te zeggen dat frameworks geen toekomst hebben is te kort door de bocht. Er is namelijk niks mis met een goed framework, je moet namelijk niet altijd een framework gebruiken net zoals je niet altijd geen framework moet gebruiken.

Pick the right tool for the job

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

GrooV schreef op woensdag 25 september 2019 @ 08:35:
[...]


Pick the right tool for the job
En anders wacht je even en dan is er weer een nieuw Frameworkje du jour for the job. :)

Less alienation, more cooperation.


Acties:
  • +1 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
GrooV schreef op woensdag 25 september 2019 @ 08:35:
[...]
Om nog maar te zwijgen over IE11 support.
Enigszins uit context, maar veel moderne JavaScript libraries vermelden IE11 niet eens meer als ondersteunde browser op hun github pagina's. Ergens ook wel terecht. Het is gewoon jammer dat er nog zoveel mensen zijn in het bedrijfsleven die het per se willen gebruiken.

Al was ik wel blij toen het uitkwam voor Windows Server 2012 recentelijk, omdat we nog klanten hadden die op IE10 vastzaten ;(
Ik ben er als de dood voor, eerlijk gezegd :/

Aan de ene kant ben ik een voorvechter van webapplicaties en zie ik het als de enige toekomstbestendige oplossing, aan de andere kant is web development een soort Vietnam geworden waarbij elke stap die je zet, de verkeerde kan zijn.

Hoe langer de doorlooptijd van het beoogde project, hoe enger het wordt.
Accretion schreef op woensdag 25 september 2019 @ 00:21:
Het is inderdaad zo dat het internet vol staat met half-gebakken blogjes die eigenlijk allemaal hetzelfde is omdat iedereen voor zijn 'portfolio' exact hetzelfde idee kopieert van een ander blog.
Ja irritant is dat.

Soms zoek ik naar diepgaandere informatie over iets, en dan krijg ik op 20 verschillende blogs hetzelfde Hello World voorbeeld van 1 of andere hipster met een baard en zijn MacBook |:(

I'm getting too old for this shit. En ik ben pas 38.

Ik hou ook mijn hart vast voor als ik ooit weer moet solliciteren... al die bedrijven die hip proberen te zijn. En dan zie je een foto van een kantoor met een knalrode muur (waar ik agressief van word) met 1 of andere slogan er op en het jaarlijkse Ski uitje met de zaak :r

Dingen waar ik echt 0,0 om geef. Maar goed, dat even terzijde :+

Mijn online "aanwezigheid" is ook minimaal. Ik ben gestopt met Facebook en dergelijke. Geen zin om een cover life te fabriceren om "interessant" te lijken en mezelf af te trekken op de likes die ik krijg.

[ Voor 78% gewijzigd door Lethalis op 25-09-2019 22:03 ]

Ask yourself if you are happy and then you cease to be.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Lethalis schreef op dinsdag 24 september 2019 @ 09:01:
[...]

Maar EF Core is een complete rewrite van EF die niet feature complete is.
En godsgruwelijk traag feature complete wordt gemaakt.
Elk jaar een major release he. Als jouw broodnodige feature er nu niet in zit, heb je hem -misschien- volgend jaar wel. Maar ik zie ook features die al sinds 2015 op de roadmap staan er nog niet in zitten. Ach, gelukkig hebben ze spatial datatypes toegevoegd recent, dat is iets wat elke developer dagdagelijks gebruikt natuurlijk. Views fatsoenlijk ondersteunen heb je toch niet nodig. ><

Suffice to say dat ik op het werk geregeld heb dat we gaan overstappen op LLBLGen. De API is misschien wat minder strak dan die van EF, de perf is beter. En het is geschift dat EfBe (in zijn eentje / met een klein team?) meer werk weet te verzetten dan complete afdelingen bij MS.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • +1 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Grijze Vos schreef op woensdag 25 september 2019 @ 22:15:
[...]
Suffice to say dat ik op het werk geregeld heb dat we gaan overstappen op LLBLGen. De API is misschien wat minder strak dan die van EF, de perf is beter. En het is geschift dat EfBe (in zijn eentje / met een klein team?) meer werk weet te verzetten dan complete afdelingen bij MS.
Het verbaast me niet eerlijk gezegd.

Ik volg het hele .NET Core traject al een tijdje sinds versie 1.0. Volgens mij vergaderen ze daar meer dan ze programmeren en dan krijgen ze het nog voor elkaar om rare beslissingen te nemen over zo ongeveer alles.

Heb meerdere keren van die momenten gehad dat ik het niet meer zag zitten en erover nadacht om maar iets anders te leren dan de Microsoft stack.

Inmiddels gaat het wel weer... maar pfff.

Ik heb overigens op diverse blogs EfBe zijn rants regelmatig voorbij zien komen over .NET Core :+

[ Voor 18% gewijzigd door Lethalis op 25-09-2019 23:42 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Lethalis schreef op woensdag 25 september 2019 @ 23:27:
[...]

Het verbaast me niet eerlijk gezegd.

Ik volg het hele .NET Core traject al een tijdje sinds versie 1.0. Volgens mij vergaderen ze daar meer dan ze programmeren en dan krijgen ze het nog voor elkaar om rare beslissingen te nemen over zo ongeveer alles.

Heb meerdere keren van die momenten gehad dat ik het niet meer zag zitten en erover nadacht om maar iets anders te leren dan de Microsoft stack.

Inmiddels gaat het wel weer... maar pfff.

Ik heb overigens op de .NET developer blogs EfBe zijn rants regelmatig voorbij zien komen :+
Hahaha, dat heb ik nu ook. Ik heb echt het idee dat het in hun DNA zit om defeat uit de jaws of victory te snatchen.

HTTPlistener is ook zo'n mooi voorbeeld.... "Neem maar kestrel"

Het is ook de reden dat ik niet de HTTP client gebruik. Ja het is ruk, maar ik maak liever zelf mijn requests dan dat een exception in een gedeelde client alle uitstaande async awaits opdoekt omdat het onderliggende object ergens een exception heeft gehad.

Maar ja, dat F#......

Less alienation, more cooperation.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Lethalis schreef op woensdag 25 september 2019 @ 23:27:
[...]

Het verbaast me niet eerlijk gezegd.

Ik volg het hele .NET Core traject al een tijdje sinds versie 1.0. Volgens mij vergaderen ze daar meer dan ze programmeren en dan krijgen ze het nog voor elkaar om rare beslissingen te nemen over zo ongeveer alles.

Heb meerdere keren van die momenten gehad dat ik het niet meer zag zitten en erover nadacht om maar iets anders te leren dan de Microsoft stack.
Herkenbaar. ;)

Hetzelfde nu met de GRPC support in .NET Core. Ze stoppen superveel effort in het ondersteunen van het ding in ASP .NET Core. Ze implementeren de helft van de features.

Dan stoppen ze wel veel effort in het stroomlijnen van het ASP.NET Core gedeelte (waarom niet gewoon op .NET Core laten werken, waarom moet die ASP stack erin gevouwen worden? Ik wil GRPC niet hosten in IIS, waarom zou ik.)

En de andere helft van de effort zit in het native in CLR ondersteunen van grpc, ipv de onderliggende C lib te gebruiken. Die redenatie kan ik nog een beetje volgen, maar ook dat gaat op termijn weer subtiele implementatieverschillen veroorzaken, weet ik nu al.

Kijk, gelukkig draaien wij single stack (.NET), dus maakt het mij niet zoveel uit. Maar je zult maar multi-stack zijn en rare subtiele bugs krijgen in je infrastructuur libraries.

[ Voor 24% gewijzigd door Grijze Vos op 26-09-2019 14:08 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Grijze Vos schreef op donderdag 26 september 2019 @ 14:08:
Hetzelfde nu met de GRPC support in .NET Core. Ze stoppen superveel effort in het ondersteunen van het ding in ASP .NET Core. Ze implementeren de helft van de features.
Dat ze na al die tijd nog niet geleerd hebben dat dat een fucking slecht idee is zeg...

Dat soort 'hype' shit moet je gewoon lekker aan libraries overlaten. Heck; Java heeft sinds kort een 'modernere' Http Client en niemand geeft ene shit omdat iedereen al lang een van de vele Http Client libraries gebruikt. Het supporten van een specifiek serialisatie smaakje of whatever moet je niet in je std lib hebben. In Java heb je nu ook een hoop shit omdat ze in nieuwere versies een hoop XML meuk uit de core libraries hebben moeten slopen. Da's een van de redenen dat Java 8 zo lang op zich liet wachten.

https://niels.nu


  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Wat me het meest irriteert zijn de complete rewrites van stukken software waardoor je na 3 jaar nog niet eens zover bent als je 3 jaar geleden al was. Ja ik snap dat keuzes uit het verleden nu misschien beter kunnen maar het is gewoon steeds hetzelfde geneuzel.

Het hele .Net core had ook wel anders aangepakt kunnen worden.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Grijze Vos schreef op woensdag 25 september 2019 @ 22:15:
[...]

En godsgruwelijk traag feature complete wordt gemaakt.
Elk jaar een major release he. Als jouw broodnodige feature er nu niet in zit, heb je hem -misschien- volgend jaar wel. Maar ik zie ook features die al sinds 2015 op de roadmap staan er nog niet in zitten. Ach, gelukkig hebben ze spatial datatypes toegevoegd recent, dat is iets wat elke developer dagdagelijks gebruikt natuurlijk. Views fatsoenlijk ondersteunen heb je toch niet nodig. ><

Suffice to say dat ik op het werk geregeld heb dat we gaan overstappen op LLBLGen. De API is misschien wat minder strak dan die van EF, de perf is beter. En het is geschift dat EfBe (in zijn eentje / met een klein team?) meer werk weet te verzetten dan complete afdelingen bij MS.
Weet je wat ik eigenlijk nog vervelender vind? Dat ze bij zo ongeveer alles ervan uitgaan dat je EF gebruikt. Zo ook met ASP.NET Identity en IdentityServer4.

Ik moet een goede authenticatie en autorisatie flow bouwen voor een SPA en ik heb geen zin het wiel opnieuw uit te vinden.

Dus neig ik gewoon naar het gebruiken van IdentityServer4 met OAuth2 en PKCE. Maar ik wil geen EF rommel erbij :F

Als ik dan weer zie wat voor een gedoe dit allemaal is om het zonder EF te doen pfff.

Natuurlijk kan ik ook de boel omzeilen door zelf JWT tokens te genereren, maar dan krijg je dus met allerlei security concerns te maken waarvan het juist fijn is als die door een standaard library worden afgevangen.

Want zelf JWT access tokens maken, komt in grote lijnen met een Implicit Grant flow overeen met ditto security concerns. Refresh tokens mogen dan eigenlijk zelfs niet eens

:r

/einde rant

Tot zover "even snel" authenticatie integreren in mijn SPA. Ik begin mijn cookies te missen (die overigens nog wel vaak worden gebruikt icm tokens zie ik op diverse blogs, dan wel met HttpOnly, secure etc).

Als iemand nog tips heeft, zijn ze welkom :)

Time is not on my side...
Hydra schreef op donderdag 26 september 2019 @ 14:23:
[...]
Dat ze na al die tijd nog niet geleerd hebben dat dat een fucking slecht idee is zeg...
Sterker nog, ze zijn een eigen JSON library aan het bouwen, terwijl iedereen gewoon NewtonSoft gebruikt.

Allemaal voor een klein beetje extra performance... maar weet God hoeveel compatibiliteit issues dit weer gaat opleveren.

[ Voor 11% gewijzigd door Lethalis op 29-09-2019 11:50 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

En in plaats van dat ze die dude van NewtonSoft nu wat centen doen moeten ze het zelf weer schrijven. EF vs nHibernate was net zo'n verhaal.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • defiant
  • Registratie: Juli 2000
  • Laatst online: 13:00

defiant

Moderator General Chat
Het commerciële punt van Microsoft is dan ook dat het .NET framework voor de belangrijkste componenten een officieel ondersteunde Microsoft variant beschikbaar heeft. D.w.z. in tegenstelling tot Java, hoef je als je wilt geen keuzes te maken, maar kies je voor EF, WCF (niet in core), ASP.NET MVC, etc.

Het probleem is alleen dat niet alle componenten Microsoft even volwassen waren of een langdurig leven waren beschoren. Vanuit de ORM wereld is er altijd veel kritiek geweest op EF, zeker in het begin. Met de komst van .NET Core slaat Microsoft weer een nieuwe richting in waarin er bijvoorbeeld opeens een officieel Microsoft DI framework aanwezig is, maar aan de andere kant afscheid wordt genomen van een officieel component voor SOAP services (wat in de corporate/enterprise wereld nog veel wordt gebruikt).

Het lijkt erop alsof MS wil meeliften op de snel bewegende wereld van web/cloud/etc.

"When I am weaker than you I ask you for freedom because that is according to your principles; when I am stronger than you I take away your freedom because that is according to my principles"- Frank Herbert


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Lethalis schreef op zondag 29 september 2019 @ 11:37:
[...]

Tot zover "even snel" authenticatie integreren in mijn SPA. Ik begin mijn cookies te missen (die overigens nog wel vaak worden gebruikt icm tokens zie ik op diverse blogs, dan wel met HttpOnly, secure etc).

Als iemand nog tips heeft, zijn ze welkom :)

Time is not on my side...
Wij generaten idd zelf JWT tokens en stoppen die in een cookie. Moet eerlijk zeggen dat ik het niet gebouwd heb en er vrij weinig van weet. Heb alleen de implementatie as is netjes weggewerkt in onze nieuwe .NET Core architectuur nadat mijn collega het gebouwd had.

Wij moesten wel integreren met onze oude zooi, dus we zetten sowieso twee cookies op het moment, voor beiden implementaties.
Sandor_Clegane schreef op zondag 29 september 2019 @ 13:16:
En in plaats van dat ze die dude van NewtonSoft nu wat centen doen moeten ze het zelf weer schrijven. EF vs nHibernate was net zo'n verhaal.
Dat doen ze al, die dude werkt voor MS. Vaag dat ze het opnieuw bouwen. Verbeter dan gewoon Newtonsoft.Json, desnoods breng je het onder in een MS namespace.

[ Voor 20% gewijzigd door Grijze Vos op 29-09-2019 20:17 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
defiant schreef op zondag 29 september 2019 @ 14:00:
Het commerciële punt van Microsoft is dan ook dat het .NET framework voor de belangrijkste componenten een officieel ondersteunde Microsoft variant beschikbaar heeft. D.w.z. in tegenstelling tot Java, hoef je als je wilt geen keuzes te maken, maar kies je voor EF, WCF (niet in core), ASP.NET MVC, etc.
Daar voldoen ze al een tijdje niet meer aan.

Sterker nog, open source is een manier voor ze om juist steeds meer dingen af te stoten. Daarom verbaast het mij ook dat ze soms alsnog weer iets zelf gaan doen, zoals die JSON library.

Een groot bedrijf als Microsoft denkt simpelweg door de community bij een project te betrekken, dat ze dan met minder mensen in dienst bepaalde producten in leven kunnen houden. Als je op github kijkt wie er dan commit, dan is het ook nog eens vaak een intern.
Vanuit de ORM wereld is er altijd veel kritiek geweest op EF, zeker in het begin. Met de komst van .NET Core slaat Microsoft weer een nieuwe richting in waarin er bijvoorbeeld opeens een officieel Microsoft DI framework aanwezig is, maar aan de andere kant afscheid wordt genomen van een officieel component voor SOAP services (wat in de corporate/enterprise wereld nog veel wordt gebruikt).

Het lijkt erop alsof MS wil meeliften op de snel bewegende wereld van web/cloud/etc.
Ook al wil je graag een eigen ORM oplossing aanbieden, dan nog is het handig als je klanten / gebruikers de mogelijkheid geeft om er aan te knopen wat je maar wil.

Nu kan dat met IdentityServer ook, maar Microsoft documenteert dat scenario niet / nauwelijks. Alle voorbeelden gebruiken EF. Dus als jij geen EF maar NHibernate of Dapper wil gebruiken, dan moet je het van de community hebben en eindig je al snel op iemand zijn blog die dan een artikel schrijft met een enorm stappenplan dat je denkt van "really? voor zoiets simpels?".

Microsoft duwt EF door je strot met zo ongeveer alles dat je wil doen. Sowieso is een nieuw ASP.NET Core project maken een mijnenveld. Ik kies altijd voor een Empty Project template, en voeg dan elk dingetje dat ik wil handmatig toe... anders krijg ik er een berg zooi bij waar ik helemaal niet op zit te wachten. Van uitgebreide telemetrie, EF, tot en met allemaal JavaScript en bootstrap libraries waarvan ik helemaal niet wil dat Visual Studio die beheert.

Ach ja.
Grijze Vos schreef op zondag 29 september 2019 @ 20:16:
[...]
Wij generaten idd zelf JWT tokens en stoppen die in een cookie. Moet eerlijk zeggen dat ik het niet gebouwd heb en er vrij weinig van weet. Heb alleen de implementatie as is netjes weggewerkt in onze nieuwe .NET Core architectuur nadat mijn collega het gebouwd had.
Hoe doen jullie dan sessie management?

Stel je genereert een JWT token, dan verloopt deze meestal na 10 tot 15 minuten. Als gebruikers actief bezig zijn met jouw SPA, is het niet handig als ze ineens opnieuw moeten inloggen. Dus dan zul je automatisch een nieuw access token moeten aanvragen, met bijvoorbeeld een refresh token.

Maar zodra iemand een refresh token bemachtigt, kan hij oneindig nieuwe tokens aanvragen... dus dat is een vrij nasty scenario als daar geen extra beveiliging op zit.

Of gaan jullie zover als sommige voorbeelden die ik gezien heb, dat elke gelukte request naar een API ook automatisch een nieuw token oplevert? Dat voelt heel wrang voor mij ergens (het mixen van 2 verantwoordelijkheden).

Al met al vind ik de gedachte achter een aparte IdentityServer die als authority fungeert voor het uitdelen en valideren van tokens wel iets hebben, omdat je dan 1 duidelijke afgebakende functie hebt op 1 plek. Bovendien met een beperkte attack surface.

PS
Wat ik wil, lijkt met een eigen implementatie van IResourceOwnerPasswordValidator te kunnen:

https://www.linkedin.com/...4-using-owner-dalvandi-2/

Ik ga er nog een tijdje mee verder spelen. Zou natuurlijk prima een class kunnen maken die IResourceOwnerPasswordValidator implementeert en bijvoorbeeld met Dapper de juiste gegevens erbij haalt.


Schijnt onveilige methode te zijn :X Ach ja. Next.

"The Resource Owner Password Flow is rarely the recommended approach. It is intended for applications for which no other flow works" :F

Ik moet er echt rustig voor gaan zitten en het allemaal gaan uitzoeken... meh. Ook fijn dat er blijkbaar mensen zijn die het gewoon implementeren en het verder prima vinden. Er zelfs een hele blog post op LinkedIn aan wenden.

[ Voor 30% gewijzigd door Lethalis op 29-09-2019 21:37 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Grijze Vos schreef op zondag 29 september 2019 @ 20:16:
[...]

Wij generaten idd zelf JWT tokens en stoppen die in een cookie. Moet eerlijk zeggen dat ik het niet gebouwd heb en er vrij weinig van weet. Heb alleen de implementatie as is netjes weggewerkt in onze nieuwe .NET Core architectuur nadat mijn collega het gebouwd had.

Wij moesten wel integreren met onze oude zooi, dus we zetten sowieso twee cookies op het moment, voor beiden implementaties.


[...]

Dat doen ze al, die dude werkt voor MS. Vaag dat ze het opnieuw bouwen. Verbeter dan gewoon Newtonsoft.Json, desnoods breng je het onder in een MS namespace.
Dat wist ik niet, is dat sinds kort?

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 23-09 16:37
Grijze Vos schreef op zondag 29 september 2019 @ 20:16:
[...]
Dat doen ze al, die dude werkt voor MS. Vaag dat ze het opnieuw bouwen. Verbeter dan gewoon Newtonsoft.Json, desnoods breng je het onder in een MS namespace.
De redenering achter de keuze om System.Text.Json te maken staat ook online: https://devblogs.microsof...ew-system-text-json-apis/ en de initiële announcement https://github.com/dotnet/corefx/issues/33115 . De uitleg klinkt goed beredeneert, al kan ik niet zeggen of dat het inderdaad de betere keuze is.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Lethalis schreef op zondag 29 september 2019 @ 20:17:
[...]
Stel je genereert een JWT token, dan verloopt deze meestal na 10 tot 15 minuten. Als gebruikers actief bezig zijn met jouw SPA, is het niet handig als ze ineens opnieuw moeten inloggen. Dus dan zul je automatisch een nieuw access token moeten aanvragen, met bijvoorbeeld een refresh token.
Onze sessie tokens zijn max 24u geldig, ergens na middernacht lopen ze af.
Sandor_Clegane schreef op zondag 29 september 2019 @ 22:30:
[...]


Dat wist ik niet, is dat sinds kort?
https://twitter.com/james...78719138347495424?lang=en

Al anderhalf jaar.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Antrax
  • Registratie: April 2012
  • Laatst online: 13:13
Lethalis schreef op zondag 29 september 2019 @ 20:17:
Hoe doen jullie dan sessie management?
Ik heb hier weken voor aan de eetkamer tafel gezeten. Nagedacht hoe het hedendaags zou moeten zijn of gaan. Geconstateerd dat het veel gebruikt wordt zoals voorbeeld projecten het hebben (aka. Hello World).
Ik heb er teveel tijd aan verspilt imho. voor een Symfony backend applicatie. Ik sta nu op het punt om de voorkant te programmeren met React.
Lethalis schreef op zondag 29 september 2019 @ 20:17:
Stel je genereert een JWT token, dan verloopt deze meestal na 10 tot 15 minuten. Als gebruikers actief bezig zijn met jouw SPA, is het niet handig als ze ineens opnieuw moeten inloggen. Dus dan zul je automatisch een nieuw access token moeten aanvragen, met bijvoorbeeld een refresh token. Maar zodra iemand een refresh token bemachtigt, kan hij oneindig nieuwe tokens aanvragen...
Ik gebruik om die reden de refresh token in zijn geheel niet. Bij het genereren van de token gebruik ik `RS256` en ziet mijn token er zo uit:
code:
1
2
3
4
5
6
{
  "iat": 1569791543,
  "nbf": 1569791543,
  "exp": 0,
  "sub": "gebruiker@bedrijfsdomein.nl"
}
De 0 bij exp is met opzet voor dit voorbeeld omdat de geldigheid per environment aangepast kan worden (staging en testing CI hebben bijv. dynamic values) maar die is in de backend: `time() + (60 * 60 * $this->jwtTtl),`. Vraag mij niet waarom ik voor 168 uur (7 dagen) heb gekozen. Ik wilde in eerste instantie de gebruiker niet lastig vallen met opnieuw inloggen maar ik kan er nog voor kiezen om het IP adres te koppelen aan de token (een node _ipAddress_ in de token should do the job) en als die niet overeenkomt moet je gewoon opnieuw inloggen of naast een ip adres de user agent erin zetten?! (Misschien ab-testen in de toekomst, als ik ooit een doel vind voor deze applicatie). In de backend wordt bij iedere request de token gesjeckt. Is het nog geldig? De standaard shizzle. Kan ik met de private key de token decrypten? In de SPA zal ik vervolgens de public key gebruiken (per environment) om vervolgens ook te controleren of er niet gerommeld is met de token.

En uiteraard (want dat gaat gebeuren :P) zijn er developers hier in dit draadje die het niet eens zullen zijn met mijn aanpak maar vooralsnog zie ik geen betere oplossing :)
Lethalis schreef op zondag 29 september 2019 @ 20:17:
Of gaan jullie zover als sommige voorbeelden die ik gezien heb, dat elke gelukte request naar een API ook automatisch een nieuw token oplevert? Dat voelt heel wrang voor mij ergens (het mixen van 2 verantwoordelijkheden).
Ik wil niemand, maar dan ook niemand, dit adviseren te implementeren in welke applicatie dan ook. I rather shoot myself in the foot.

.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • +1 Henk 'm!

  • defiant
  • Registratie: Juli 2000
  • Laatst online: 13:00

defiant

Moderator General Chat
Lethalis schreef op zondag 29 september 2019 @ 20:17:
Hoe doen jullie dan sessie management?
[...]

Al met al vind ik de gedachte achter een aparte IdentityServer die als authority fungeert voor het uitdelen en valideren van tokens wel iets hebben, omdat je dan 1 duidelijke afgebakende functie hebt op 1 plek. Bovendien met een beperkte attack surface.
Je zou eens kunnen kijken naar een oplossing zoals Keycloak, het is enige werk om het te configureren voor .NET aangezien het pakket zich op Java richt, maar het neemt wel heel veel werk uit handen op het gebied van sessie management, JTW, synchronisatie, gebruikersmanagement, etc.

"When I am weaker than you I ask you for freedom because that is according to your principles; when I am stronger than you I take away your freedom because that is according to my principles"- Frank Herbert


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Grijze Vos schreef op zondag 29 september 2019 @ 23:03:
[...]

Onze sessie tokens zijn max 24u geldig, ergens na middernacht lopen ze af.


[...]

https://twitter.com/james...78719138347495424?lang=en

Al anderhalf jaar.
Oh dat valt nog mee dus. :)

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Lethalis schreef op zondag 29 september 2019 @ 20:17:
Maar zodra iemand een refresh token bemachtigt, kan hij oneindig nieuwe tokens aanvragen... dus dat is een vrij nasty scenario als daar geen extra beveiliging op zit.
Je 'refreshed' een JWT gewoon door met die JWT een nieuwe JWT aan te vragen. Dat is dus gewoon een 'login' maar in plaats van je login credentials gebruik je de JWT. En dit is prima veilig omdat als je die gebruiker z'n toegang in wil trekken bijvoorbeeld, of z'n roles wil wijzigen, dat gewoon kan doen.

Het nadeel van JWTs is dus dat in die 'refresh' periode je geen wijzigingen door kunt voeren. Ik snap ook echt niet dat mensen die dingen 24 uur geldig laten zijn, dan heb je het m.i. helemaal niet begrepen en gebruik je JWTs omdat het 'cool' is, en niet omdat je ze nodig hebt.
Of gaan jullie zover als sommige voorbeelden die ik gezien heb, dat elke gelukte request naar een API ook automatisch een nieuw token oplevert? Dat voelt heel wrang voor mij ergens (het mixen van 2 verantwoordelijkheden).
Als een voorbeeld dat doet, hebben ze het echt niet begrepen, en zou ik weinig waarde hechten aan de mening van de schrijver.
Antrax schreef op zondag 29 september 2019 @ 23:24:
[/code]De 0 bij exp is met opzet voor dit voorbeeld omdat de geldigheid per environment aangepast kan worden (staging en testing CI hebben bijv. dynamic values) maar die is in de backend: `time() + (60 * 60 * $this->jwtTtl),`. Vraag mij niet waarom ik voor 168 uur (7 dagen) heb gekozen.
Omdat je, sorry, de verkeerde tool voor de job gebruikt. Gebruik voor persistence van logins gewoon login-cookies. JWTs zijn vooral bedoeld in grote gedistribueerde systemen waar je niet wil dat voor iedere API call een login server geraakt wordt, die wordt dan eens in de 10 minuten ofzo geraakt (voor de refresh en de initiele logins). Als je JWTs in cookies op gaat slaan, en/of die dingen langer geldig laat zijn dan 10 minuten ofzo, dan sla je aardig de plank mis.

[ Voor 42% gewijzigd door Hydra op 30-09-2019 09:06 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Hydra schreef op maandag 30 september 2019 @ 09:00:
[...]
Omdat je, sorry, de verkeerde tool voor de job gebruikt. Gebruik voor persistence van logins gewoon login-cookies. JWTs zijn vooral bedoeld in grote gedistribueerde systemen waar je niet wil dat voor iedere API call een login server geraakt wordt, die wordt dan eens in de 10 minuten ofzo geraakt (voor de refresh en de initiele logins). Als je JWTs in cookies op gaat slaan, en/of die dingen langer geldig laat zijn dan 10 minuten ofzo, dan sla je aardig de plank mis.
Daar zeg je inderdaad wel iets... heb ik überhaupt tokens nodig? Mijn projecten zijn niet zo gigantisch dat het boeit en ik zou prima met cookies af kunnen die server side encrypted zijn.

Belangrijkste is eigenlijk dus, dat ze HttpOnly, Secure en SameSite zijn.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Hydra schreef op maandag 30 september 2019 @ 09:00:
[...]


Het nadeel van JWTs is dus dat in die 'refresh' periode je geen wijzigingen door kunt voeren. Ik snap ook echt niet dat mensen die dingen 24 uur geldig laten zijn, dan heb je het m.i. helemaal niet begrepen en gebruik je JWTs omdat het 'cool' is, en niet omdat je ze nodig hebt.

[...]


Omdat je, sorry, de verkeerde tool voor de job gebruikt. Gebruik voor persistence van logins gewoon login-cookies. JWTs zijn vooral bedoeld in grote gedistribueerde systemen waar je niet wil dat voor iedere API call een login server geraakt wordt, die wordt dan eens in de 10 minuten ofzo geraakt (voor de refresh en de initiele logins). Als je JWTs in cookies op gaat slaan, en/of die dingen langer geldig laat zijn dan 10 minuten ofzo, dan sla je aardig de plank mis.
Wat zou je dan moeten gebruiken als je een Angular applicatie data wil laten ophalen vanaf een API. Ik loop nu bijvoorbeeld stage, maar op school heb ik geleerd dat je een backend benadert met een jwt token.
In het eerste jaar moesten we NodeJS gebruiken om een API te schrijven, dan moesten we volgens de leraren JWT gebruiken. In het tweede jaar .NET Core met Angular, ook JWT. Hoe zou het volgens jou dan gebruikt moeten worden?

Ik moet nu tijdens mijn stage ergens programmeren, daar gebruik ik dan dus ook JWT, maar dat zou niet de beste oplossing zijn?

Edit: Angular + REST Api is een eis vanuit het bedrijf

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23-09 14:00
Jantje2000 schreef op maandag 30 september 2019 @ 09:34:
[...]

Wat zou je dan moeten gebruiken als je een Angular applicatie data wil laten ophalen vanaf een API. Ik loop nu bijvoorbeeld stage, maar op school heb ik geleerd dat je een backend benadert met een jwt token.
In het eerste jaar moesten we NodeJS gebruiken om een API te schrijven, dan moesten we volgens de leraren JWT gebruiken. In het tweede jaar .NET Core met Angular, ook JWT. Hoe zou het volgens jou dan gebruikt moeten worden?

Ik moet nu tijdens mijn stage ergens programmeren, daar gebruik ik dan dus ook JWT, maar dat zou niet de beste oplossing zijn?

Edit: Angular + REST Api is een eis vanuit het bedrijf
JWT is goed voor API en server-to-server authenticatie, want daar is het voor bedoeld. JWT is niet goed voor sessies. Dus als de client een JWT token naar de API stuurt, is dat prima. Ga je het gebruiken als user session in de client, o.i.d., ben je verkeerd bezig.

Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
ThomasG schreef op maandag 30 september 2019 @ 09:54:
[...]
JWT is goed voor API en server-to-server authenticatie, want daar is het voor bedoeld. JWT is niet goed voor sessies. Dus als de client een JWT token naar de API stuurt, is dat prima. Ga je het gebruiken als user session in de client, o.i.d., ben je verkeerd bezig.
Hoe ik nu werk (en het heb geleerd op school)

De user stuurt username + password in de body naar de server => Server verifieert dat => Server stuurt JWT token als result terug => de user stuurt ieder volgende request de jwt token mee, waarna de server controleert of dit token afkomstig is van de server. Als de user werkelijk is ingelogd ontvangt deze het result van de request, anders een 401 Unauthorized.

Is dat dan zoals het hoort?

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Lethalis schreef op maandag 30 september 2019 @ 09:21:
[...]

Daar zeg je inderdaad wel iets... heb ik überhaupt tokens nodig? Mijn projecten zijn niet zo gigantisch dat het boeit en ik zou prima met cookies af kunnen die server side encrypted zijn.
Tokens of JWTs? Als je een SPA hebt, heb je iets van een session state nodig. Maar daarvoor kun je prima de standaard sessies van je framework voor gebruiken. Als het service to service is, zijn er ook veel opties.

Maar als het een monolitische applicatie is, heb je per definitie geen JWTs nodig. Die hebben dan alleen maar het "kan niet ingetrokken worden" nadeel zonder de schaalbaarheidsvoordelen.
Jantje2000 schreef op maandag 30 september 2019 @ 09:34:
Wat zou je dan moeten gebruiken als je een Angular applicatie data wil laten ophalen vanaf een API. Ik loop nu bijvoorbeeld stage, maar op school heb ik geleerd dat je een backend benadert met een jwt token.
In het eerste jaar moesten we NodeJS gebruiken om een API te schrijven, dan moesten we volgens de leraren JWT gebruiken. In het tweede jaar .NET Core met Angular, ook JWT. Hoe zou het volgens jou dan gebruikt moeten worden?

Ik moet nu tijdens mijn stage ergens programmeren, daar gebruik ik dan dus ook JWT, maar dat zou niet de beste oplossing zijn?
JWTs zijn een oplossing voor een enkel probleem: we hebben een 'login' service die het te druk heeft om elk request te kunnen beoordelen. Het voordeel van JWT t.o.v. 'gewone' tokens heb ik in een blog post beschreven een tijd terug.

Ik vind het wel typisch dat je van docenten JWTs moet gebruiken maar dat niet duidelijk uitgelegd wat de voordelen en nadelen zijn. In monolitische applicaties hebben JWTs gewoon geen nut.

[ Voor 44% gewijzigd door Hydra op 30-09-2019 10:09 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
"zoals het hoort" is meestal een tijdelijk begrip :P

Daarom loop ik hier ook nog steeds mee te kutten na 16 jaar als programmeur gewerkt te hebben _O-

Dit is eigenlijk al een apart topic waard.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Lethalis schreef op maandag 30 september 2019 @ 10:07:
[...]

"zoals het hoort" is meestal een tijdelijk begrip :P

Daarom loop ik hier ook nog steeds mee te kutten na 16 jaar als programmeur gewerkt te hebben _O-

Dit is eigenlijk al een apart topic waard.
Ja dat begrijp ik inderdaad :P

Ik heb het nu zo geleerd, dat probeer ik dan ook te doen, maar ik probeer wel zo veel mogelijk kwaliteit te leveren, hoewel dat niet altijd lukt. Bijvoorbeeld Google + Microsoft authorization mogelijk maken, terwijl je Angular moet gebruiken, maar dan ook wilt authenticeren op de eigen server. :X Ik heb het werkend, maar niet mooi :/
Hydra schreef op maandag 30 september 2019 @ 10:03:
[...]

JWTs zijn een oplossing voor een enkel probleem: we hebben een 'login' service die het te druk heeft om elk request te kunnen beoordelen. Het voordeel van JWT t.o.v. 'gewone' tokens heb ik in een blog post beschreven een tijd terug.

Ik vind het wel typisch dat je van docenten JWTs moet gebruiken maar dat niet duidelijk uitgelegd wat de voordelen en nadelen zijn. In monolitische applicaties hebben JWTs gewoon geen nut.
Je blog ga ik doorlezen!

Verder, een applicatie die een backend heeft van C# en de frontend Angular. Dan zijn het technisch gezien twee applicaties toch? Of spreek je dan nog steeds van Monolitisch? Monolitisch lijkt mij als je maar 1 groot blok hebt toch? Dus gewoon C# met MVC Core bijvoorbeeld, waarbij alles door elkaar heen is gehutseld?

[ Voor 40% gewijzigd door Jantje2000 op 30-09-2019 10:12 ]

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Lethalis schreef op maandag 30 september 2019 @ 10:07:
Dit is eigenlijk al een apart topic waard.
Zit ook serieus te overwegen hier een nieuwe blogpost over te schrijven. I.p.v. over de techniek over de architectuur.
Cool! Feedback/vragen zijn altijd welkom :)
Verder, een applicatie die een backend heeft van C# en de frontend Angular. Dan zijn het technisch gezien twee applicaties toch? Of spreek je dan nog steeds van Monolitisch? Monolitisch lijkt mij als je maar 1 groot blok hebt toch? Dus gewoon C# met MVC Core bijvoorbeeld, waarbij alles door elkaar heen is gehutseld?
Ik heb het over de back-end; dus dat het gewoon 1 service is. De front-end heeft hier weinig mee te maken.

[ Voor 53% gewijzigd door Hydra op 30-09-2019 10:16 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Hydra schreef op maandag 30 september 2019 @ 10:12:
[...]
Ik heb het over de back-end; dus dat het gewoon 1 service is. De front-end heeft hier weinig mee te maken.
Ah oke. Bedoel je dan dat het niet meer monolitisch is als je bijvoorbeeld van het onion model gebruik maakt? Of heb je het dan echt over microservices?

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Jantje2000 schreef op maandag 30 september 2019 @ 10:20:
Ah oke. Bedoel je dan dat het niet meer monolitisch is als je bijvoorbeeld van het onion model gebruik maakt? Of heb je het dan echt over microservices?
Dat laatste, en dan ook op een flinke schaal. Denk aan Netflix.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
@Hydra ik heb je blogpost doorgelezen, maar ik zie niet direct het stukje waar jij de voordelen van JWT aangeeft? Of bedoel je dat je er gemakkelijk roles in kunt plaatsen e.d.?

Je zegt dat JWT geen voordelen bieden boven andere token systemen, maar het is ook niet direct verkeerd om JWT te gebruiken hoewel het mogelijk overkill is denk ik?

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Jantje2000 schreef op maandag 30 september 2019 @ 10:54:
Je zegt dat JWT geen voordelen bieden boven andere token systemen, maar het is ook niet direct verkeerd om JWT te gebruiken hoewel het mogelijk overkill is denk ik?
Ik ben ook allerlei blogs erover aan het lezen en eigenlijk is het een vorm van premature optimization. Je bouwt allerlei flexibiliteit en schaalbaarheid (en complexiteit!) in, zonder dat je het echt nodig hebt.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Lethalis schreef op maandag 30 september 2019 @ 11:02:
[...]

Ik ben ook allerlei blogs erover aan het lezen en eigenlijk is het een vorm van premature optimization. Je bouwt allerlei flexibiliteit en schaalbaarheid (en complexiteit!) in, zonder dat je het echt nodig hebt.
Tja, een tokensysteem heb je sowieso nodig, als de applicatie RESTful moet zijn.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Jantje2000 schreef op maandag 30 september 2019 @ 10:54:
@Hydra ik heb je blogpost doorgelezen, maar ik zie niet direct het stukje waar jij de voordelen van JWT aangeeft? Of bedoel je dat je er gemakkelijk roles in kunt plaatsen e.d.?
Ik beschrijf in het begin, 2e en 3e alinea. Dus dat het voordeel van JWTs heel specifiek is, dat je niet voor ieder request vanuit een front-end eerst langs een centrale 'login' database hoeft omdat de client iedere keer alle rollen e.d. (claims) meestuurt.
Je zegt dat JWT geen voordelen bieden boven andere token systemen, maar het is ook niet direct verkeerd om JWT te gebruiken hoewel het mogelijk overkill is denk ik?
Een JWT kun je niet 'gewoon' intrekken, je moet wachten tot 'ie expired. Dus als Pietje rare shit doet kun je niet zijn account blokkeren, je kunt alleen nieuwe tokens ongeldig maken. Dus heb je korte (10 minuten ofzo) expiries nodig, en moet je client dus die refresh inbouwen. Dat zijn twee grote nadelen. Als je geen voordelen hebt van een JWT (want; je bent geen Netflix) is het gewoon onhandig om in te bouwen. Het is als software engineer altijd een doel om shit simpel te houden.
Jantje2000 schreef op maandag 30 september 2019 @ 11:03:
Tja, een tokensysteem heb je sowieso nodig, als de applicatie RESTful moet zijn.
Nee hoor, het is gewoon een web applicatie. Je kunt ook prima basic auth gebruiken, of gewoon sessies.

Helaas is het tegenwoordig zo dat er enorme bakken developers zijn die denken dat je meteen naar Oath en JTWs moet grijpen als je een login-system ofzo nodig hebt. Maar dan ondertussen niet snappen wat de voor- en nadelen van JWT en OAuth zijn, en dan enorm complexe systemen bouwen, zonder dat het waarde heeft, waar dan heel veel geld in gaat zitten kwa onderhoud.
Lethalis schreef op maandag 30 september 2019 @ 11:02:
Ik ben ook allerlei blogs erover aan het lezen en eigenlijk is het een vorm van premature optimization. Je bouwt allerlei flexibiliteit en schaalbaarheid (en complexiteit!) in, zonder dat je het echt nodig hebt.
Nouja; ik heb het ook toegepast in een vorig project, een microservice architectuur. En daar was het verre van overkill; het maakte de architectuur heel veel simpeler. Het belangrijkste is dat het gewoon een tool is en het als software engineer belangrijk is alle voors en tegens van je tools te kennen. En daar gaat 't vaak mis.

[ Voor 35% gewijzigd door Hydra op 30-09-2019 11:34 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Hydra schreef op maandag 30 september 2019 @ 11:05:
[...]

Nee hoor, het is gewoon een web applicatie. Je kunt ook prima basic auth gebruiken, of gewoon sessies.

Helaas is het tegenwoordig zo dat er enorme bakken developers zijn die denken dat je meteen naar Oath en JTWs moet grijpen als je een login-system ofzo nodig hebt. Maar dan ondertussen niet snappen wat de voor- en nadelen van JWT en OAuth zijn, en dan enorm complexe systemen bouwen, zonder dat het waarde heeft, waar dan heel veel geld in gaat zitten kwa onderhoud.
Ik ben het dan ook nog grotendeels aan het leren, dus het kan inderdaad goed zijn dat ik stomme keuzes maak.

Maar ik snap wat je bedoelt, ik ga eens kijken of een ander token systeem misschien beter is voor ons doel, of dat er toch beter sessies kunnen worden gebruikt in dit geval.

Wat ik niet snap: Wat is dan de reden dat docenten jwt laten gebruiken voor een simpele webapp? Sowieso, als je op internet gaat zoeken voor authenticatie tussen .NET Core en Angular kom je eigenlijk op iedere website wel op jwt uit.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • +1 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Jantje2000 schreef op maandag 30 september 2019 @ 11:15:
[...]
Wat ik niet snap: Wat is dan de reden dat docenten jwt laten gebruiken voor een simpele webapp? Sowieso, als je op internet gaat zoeken voor authenticatie tussen .NET Core en Angular kom je eigenlijk op iedere website wel op jwt uit.
Er bestaan ook dit soort artikelen echter:

http://cryto.net/~joepie9...=dlvr.it&utm_medium=gplus

https://medium.com/@whuys...on-anno-2019-754bc4c29119

Wel probeer ik .NET Core en Angular weg te laten, en in plaats daarvan te zoeken op Single Page Applications en authentication, zodat de discussie iets algemener wordt. En het helpt ook de hipsters er een beetje uit te filteren die alleen hun nieuwe speeltje willen tonen.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
JWT heeft wel meer voordelen dan alleen je login service te ontlasten natuurlijk.

Draai hier een ASP.NET MVC applicatie die JWT gebruikt zonder dat de gebruiker ooit een token ziet, tokens worden vernietigd zodra de gebruiker uitlogt. Reden: Auth0 + IDP.
Jantje2000 schreef op maandag 30 september 2019 @ 11:15:
[...]

Ik ben het dan ook nog grotendeels aan het leren, dus het kan inderdaad goed zijn dat ik stomme keuzes maak.

Maar ik snap wat je bedoelt, ik ga eens kijken of een ander token systeem misschien beter is voor ons doel, of dat er toch beter sessies kunnen worden gebruikt in dit geval.

Wat ik niet snap: Wat is dan de reden dat docenten jwt laten gebruiken voor een simpele webapp? Sowieso, als je op internet gaat zoeken voor authenticatie tussen .NET Core en Angular kom je eigenlijk op iedere website wel op jwt uit.
De reden is dat Authenticatie lastig is, niet lastig om te implementeren maar lastig om het goed te doen. We zijn eindelijk af van alle PHP tutorials die wachtwoorden in plain text opslaan en de boel wagenwijd openzetten voor SQL Injection.

Daarom wordt bij de meeste tutorials gebruik gemaakt van een standaard stack. frontend + backend + identity middleware/service. Bij .net wordt Identityserver gebruikt en bij nodejs wordt pasport.js gebruikt.

Als jij liever je api beveiligd met forms authentication kan dat natuurlijk gewoon, geen probleem. Echter om te voorkomen dat pietje nu weer clientside wachtwoorden gaat opslaan en mee sturen en alles openzet voor CSRF zal je dit niet snel in een tutorial zien. Verder zijn alle voorbeelden van MS nu gericht op Azure en schaalbaarheid wat met een SPA + JWT wel een stuk makkelijker is

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Jantje2000 schreef op maandag 30 september 2019 @ 11:15:
Wat ik niet snap: Wat is dan de reden dat docenten jwt laten gebruiken voor een simpele webapp? Sowieso, als je op internet gaat zoeken voor authenticatie tussen .NET Core en Angular kom je eigenlijk op iedere website wel op jwt uit.
Het is meestal een kwestie van niet beter weten helaas. Docenten hebben vaak niet of nauwelijks industrie-ervaring. Waar het vooral op misgaat is architectuur: dat leer je vooral door jaren aan ervaring. Alleen door ervaring leer je een beetje het kaf van het koren te scheiden kwa blogposts e.d.

Helaas zijn hordes aan developers niet beter dan dat. Klok horen luiden maar niet weten waarde klepel hangt. Dus dan JWT inbouwen, erachter komen dat het niet kunnen intrekken een probleem is, en in plaats van het eruit te slopen en voor een simpele oplossing te gaan, gaan ze dan een eigen 'intrek' service in het systeem inbouwen. Dit soort tunnel-visie, dus niet toe willen geven dat een keuze fout was en deze dan ongedaan maken, komt enorm veel voor.
GrooV schreef op maandag 30 september 2019 @ 11:34:
JWT heeft wel meer voordelen dan alleen je login service te ontlasten natuurlijk.
Welke dan?

[ Voor 8% gewijzigd door Hydra op 30-09-2019 11:38 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Hydra schreef op maandag 30 september 2019 @ 11:37:
[...]


Het is meestal een kwestie van niet beter weten helaas. Docenten hebben vaak niet of nauwelijks industrie-ervaring. Waar het vooral op misgaat is architectuur: dat leer je vooral door jaren aan ervaring. Alleen door ervaring leer je een beetje het kaf van het koren te scheiden kwa blogposts e.d.

Helaas zijn hordes aan developers niet beter dan dat. Klok horen luiden maar niet weten waarde klepel hangt. Dus dan JWT inbouwen, erachter komen dat het niet kunnen intrekken een probleem is, en in plaats van het eruit te slopen en voor een simpele oplossing te gaan, gaan ze dan een eigen 'intrek' service in het systeem inbouwen. Dit soort tunnel-visie, dus niet toe willen geven dat een keuze fout was en deze dan ongedaan maken, komt enorm veel voor.
Tja, ik ben het nu nog vooral aan het leren. Ik zit in het derde jaar op een hbo-opleiding, dus als ik blijkbaar een foute keuze heb gemaakt wijzig ik dat graag, zodat ik het de volgende keer gelijk goed kan doen :P.

Ik ben nu even aan het kijken naar de linkjes die Lethalis stuurde, en nog even aan het uitzoeken wat beter aan miin doel beantwoord, dus ik ben benieuwd wat daar uit komt.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Hydra schreef op maandag 30 september 2019 @ 11:37:
[...]


Het is meestal een kwestie van niet beter weten helaas. Docenten hebben vaak niet of nauwelijks industrie-ervaring. Waar het vooral op misgaat is architectuur: dat leer je vooral door jaren aan ervaring. Alleen door ervaring leer je een beetje het kaf van het koren te scheiden kwa blogposts e.d.

Helaas zijn hordes aan developers niet beter dan dat. Klok horen luiden maar niet weten waarde klepel hangt. Dus dan JWT inbouwen, erachter komen dat het niet kunnen intrekken een probleem is, en in plaats van het eruit te slopen en voor een simpele oplossing te gaan, gaan ze dan een eigen 'intrek' service in het systeem inbouwen. Dit soort tunnel-visie, dus niet toe willen geven dat een keuze fout was en deze dan ongedaan maken, komt enorm veel voor.


[...]


Welke dan?
Wil je nu dat ik een heel lijstje ga opsommen? Je zet het zelf heel zwart wit hier dat het enige voordeel van JWT is dat het je login service ontlast en dat is gewoon niet zo.

Ik zou zeggen, zet je tunnel-visie tegen JWT aan de kant :)

JWT is gewoon net zoals alles, pick the right tool for the job. Ik heb menig site ontwikkeld waar intrekken van een sessie totaal niet aan de orde is maar wel graag een horizontaal schaalbare REST api wilden hebben dan kan JWT handig zijn, helemaal als je gebruik kan maken van bestaande componenten

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
GrooV schreef op maandag 30 september 2019 @ 12:47:
Wil je nu dat ik een heel lijstje ga opsommen? Je zet het zelf heel zwart wit hier dat het enige voordeel van JWT is dat het je login service ontlast en dat is gewoon niet zo.
Doe niet zo raar zeg. Ik stel je gewoon een vraag? Jij weet kennelijk iets wat ik niet weet, dus ik hoop uit te vinden of ik een blinde vlek heb of niet.
Ik zou zeggen, zet je tunnel-visie tegen JWT aan de kant :)
Okay, WTF? Ik zeg letterlijk dat ik het toegepast heb. Heb er n.b. een blog post over geschreven, en dat doe je volgens mij niet als ik er iets 'tegen' heb ofwel?
JWT is gewoon net zoals alles, pick the right tool for the job. Ik heb menig site ontwikkeld waar intrekken van een sessie totaal niet aan de orde is maar wel graag een horizontaal schaalbare REST api wilden hebben dan kan JWT handig zijn, helemaal als je gebruik kan maken van bestaande componenten
Je zegt hier letterlijk wat ik zeg, maar heb nog steeds niet uitgelegd welke voordelen er nu meer zijn naast schaalbaarheid.

[ Voor 44% gewijzigd door Hydra op 30-09-2019 12:52 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • ard1998
  • Registratie: December 2015
  • Laatst online: 09-06 19:59
hoever ik het begrijp gaat JWT niet over schaalbarheid maar over het standaardiseren van authentie. hiermee kan je de gebruiker laten kiezen op welke authenticatieserver hij zijn token(generatie) vertrouwt. Als je het wilt kan je jouw login (om)bouwen tot een service waarmee gebruikers naast het authenticeren voor jouw diencten dit ook kunnen doen voor andere websites (inloggen met ... account)

(mezelf er verder niet in verdiept maar het is mijn eerste opvatting na het lezen van https://jwt.io/introduction/)

Acties:
  • +1 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
ard1998 schreef op maandag 30 september 2019 @ 13:14:
hoever ik het begrijp gaat JWT niet over schaalbarheid maar over het standaardiseren van authentie. hiermee kan je de gebruiker laten kiezen op welke authenticatieserver hij zijn token(generatie) vertrouwt.
Ik snap echt niet hoe je dat allemaal uit jwt.io haalt. Je hele verhaal slaat als een tang op een varken.
Daarnaast snap ik ook niet zo goed waarom je in een gesprek mengt na even vluchtig een pagina bekeken te hebben. Wat schiet iemand hier mee op?

Schaalbaarheid is veruit het belangrijkste voordeel van JWTs.
Als je het wilt kan je jouw login (om)bouwen tot een service waarmee gebruikers naast het authenticeren voor jouw diencten dit ook kunnen doen voor andere websites (inloggen met ... account)
Dit klinkt alsof je JWT en OAuth door elkaar haalt.

[ Voor 17% gewijzigd door Hydra op 30-09-2019 13:27 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
ard1998 schreef op maandag 30 september 2019 @ 13:14:
hoever ik het begrijp gaat JWT niet over schaalbarheid maar over het standaardiseren van authentie. hiermee kan je de gebruiker laten kiezen op welke authenticatieserver hij zijn token(generatie) vertrouwt. Als je het wilt kan je jouw login (om)bouwen tot een service waarmee gebruikers naast het authenticeren voor jouw diencten dit ook kunnen doen voor andere websites (inloggen met ... account)

(mezelf er verder niet in verdiept maar het is mijn eerste opvatting na het lezen van https://jwt.io/introduction/)
Hoewel ik nog aan het uitzoeken ben hoe alles nou precies werkt klopt dit helaas echt niet. JWT is juist wel bedoeld voor schaalbaarheid, want doordat het token alleen maar wordt geverifieerd met een secret key, kan er horizontaal gescaled worden. Het idee is dat er nu geen sessie meer nodig is die maar op 1 server staat, waarbij uitloggen alle sessies van alle servers zou moeten laten verwijderen.

Een gebruiker kan bij JWT niet kiezen welke authenticatieserver hij vertrouwt. Het is iets wat aan de backend wordt toegevoegd, waarna gebruikers er gewoon mee moeten dealen. Sterker nog, er is boven water niets van te zien dat er gebruik wordt gemaakt van JWT.

Inloggen met google account, of met Microsoft account wordt niet gedaan met JWT, maar met OAuth.

Edit: wat hydra zegt dus

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Hydra schreef op maandag 30 september 2019 @ 12:50:
[...]


Doe niet zo raar zeg. Ik stel je gewoon een vraag? Jij weet kennelijk iets wat ik niet weet, dus ik hoop uit te vinden of ik een blinde vlek heb of niet.


[...]


Okay, WTF? Ik zeg letterlijk dat ik het toegepast heb. Heb er n.b. een blog post over geschreven, en dat doe je volgens mij niet als ik er iets 'tegen' heb ofwel?


[...]


Je zegt hier letterlijk wat ik zeg, maar heb nog steeds niet uitgelegd welke voordelen er nu meer zijn naast schaalbaarheid.
Je komt een beetje anti-JWT over vandaar :) Je zegt zelf ook "JWTs zijn een oplossing voor een enkel probleem: we hebben een 'login' service die het te druk heeft om elk request te kunnen beoordelen."

En dat is niet waar in mijn ogen, het is namelijk heel iets anders dan het horizontaal schalen van een REST service, dankzij JWT heb je geen shared sessie of DB met guid's nodig. Dat kan een keuze zijn, los van het te druk hebben. Ook wil je het stuk authenticatie misschien niet bij je API hebben liggen maar bijvoorbeeld bij een SSO provider zoals Auth0 of ADFS

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
GrooV schreef op maandag 30 september 2019 @ 15:23:
En dat is niet waar in mijn ogen, het is namelijk heel iets anders dan het horizontaal schalen van een REST service, dankzij JWT heb je geen shared sessie of DB met guid's nodig. Dat kan een keuze zijn, los van het te druk hebben.
En het 'waarom' je dat niet wil hebben is over het algemeen gewoon schaalbaarbeid. Je snapt neem ik aan wel dat het niet hebben van een shared DB geen doel op zich is. Er zit een waarom achter; horizontaal schalen.
Ook wil je het stuk authenticatie misschien niet bij je API hebben liggen maar bijvoorbeeld bij een SSO provider zoals Auth0 of ADFS
Maar dat staat los van JWT. Daarbij ontkom je er niet aan om in services JWT validatie te doen, dus je hebt ergens een shared key (bijvoorbeeld een certificaat) nodig waar je die JWT tegenaan houdt. Of je plakt er een proxy tegenaan die dat voor je doet.

JWTs hebben bijvoorbeeld als voordeel dat je, als je JWTs gebruikt, in dat object een hoop handige info kan proppen die die services dan niet meer extern op hoeven te halen. Maar dit is geen JWT specifiek voorbeeld; een dergelijke user context meesturen vanuit een API-gateway is een bekend pattern wat los staat van JWTs.

Dus nogmaals; ik ben verre van anti-JWT. Ik zie alleen dat dit typisch een tool is waar enorm veel misvattingen over bestaan en als een soort 'gouden hamer' ingezet wordt op plekken waar je beter zonder kunt.

Als je een microservice landschap hebt, kan leven met het niet direct in kunnen trekken, en een issue hebt of gaat krijgen met het horizontaal schalen van authorizatie, dan by all means ga voor JWTs. Maar het zou nooit de default moeten zijn; da's vooral m'n punt.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Jantje2000 schreef op maandag 30 september 2019 @ 13:40:
[...]

Inloggen met google account, of met Microsoft account wordt niet gedaan met JWT, maar met OAuth.

Edit: wat hydra zegt dus
Dat is OpenID Connect :)

Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Dat dacht ik ook, maar in de Google Cloud Console staan er: "OAuth 2.0-client-ID's" en "Oauth toestemmingsscherm" wat beiden over het externe inloggen gaat. Zie ik iets over het hoofd?

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23-09 14:00
GrooV schreef op maandag 30 september 2019 @ 15:23:
[...]

Je komt een beetje anti-JWT over vandaar :) Je zegt zelf ook "JWTs zijn een oplossing voor een enkel probleem: we hebben een 'login' service die het te druk heeft om elk request te kunnen beoordelen."

En dat is niet waar in mijn ogen, het is namelijk heel iets anders dan het horizontaal schalen van een REST service, dankzij JWT heb je geen shared sessie of DB met guid's nodig. Dat kan een keuze zijn, los van het te druk hebben. Ook wil je het stuk authenticatie misschien niet bij je API hebben liggen maar bijvoorbeeld bij een SSO provider zoals Auth0 of ADFS
Dat is niet dankzij JWT. JWT is namelijk niets anders dan een token formaat. Het kan ook heel goed zonder JWT, bijvoorbeeld door een ander token formaat te gebruiken. Wat je daarvoor nodig hebt is een authenticatie protocol, en dat is JWT niet.

Acties:
  • +1 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 10:00
Jantje2000 schreef op maandag 30 september 2019 @ 15:34:
[...]

Dat dacht ik ook, maar in de Google Cloud Console staan er: "OAuth 2.0-client-ID's" en "Oauth toestemmingsscherm" wat beiden over het externe inloggen gaat. Zie ik iets over het hoofd?
OAuth is authorisatie, OpenID Connect is authenticatie bovenop OAuth

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
ThomasG schreef op maandag 30 september 2019 @ 15:35:
Dat is niet dankzij JWT. JWT is namelijk niets anders dan een token formaat.
IMHO is het meer een stukje architectuur. Het exacte formaat is m.i. niet zo relevant (hoewel je natuurlijk gewoon voor een standaard gaat) als welke problemen het oplost en welke problemen het veroorzaakt. Je kunt, als je zelf de client en services bouwt, precies hetzelfde doen met een 'eigen' formaat. Op basis van XML ofzo :P XWT ;)

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Om terug te komen op het oorspronkelijke onderwerp van dit topic: Ik ben bezig met een applicatie tijdens mijn stage. Het idee is dat er medewerkers van klanten kunnen inloggen, maar dit moet ook via Google en Microsoft kunnen. Het gaat om een soort ToDo applicatie, maar dan wat extra functies

Het bedrijf wilde Angular gebruiken, met .NET Core, maar is dit in deze situatie wel handig?

Nadelen:
• Externe login is wat lastiger, omdat dat er in het Identity Framework toch grotendeels vanuit gaat dat je cookies gebruikt met sessions e.d.
• Modellen dubbel moeten definiëren e.d.

Voordelen:
• Het voelt sneller aan.

Het is echter helemaal geen grote applicatie, dus wat zouden jullie doen in zo'n voorbeeld? Zouden jullie voor een SPA gaan, of gewoon voor MVC Core bijvoorbeeld?

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Jantje2000 schreef op maandag 30 september 2019 @ 15:49:
Het is echter helemaal geen grote applicatie, dus wat zouden jullie doen in zo'n voorbeeld? Zouden jullie voor een SPA gaan, of gewoon voor MVC Core bijvoorbeeld?
Ik zou in jouw geval absoluut voor een SPA gaan omdat het voor jou als stagair gewoon een mooie leerervaring is. Ik heb zelf absoluut geen recente ervaring met .Net core, maar ik kan me niet voorstellen dat er geen goeie documentatie is over hoe je daar een API mee bouwt.

Ook ervaring met het integreren van OAuth is waardevol en in mijn ervaring (wel in de Java hoek) is het over 't algemeen ook niet complex. Eigenlijk wat je vooral doet is een externe provider om het mailadres van de gebruiker vragen en, als je daar netjes antwoord op krijgt, ervanuit gaan dat je 'ingelogd' bent.

Je ziet ook wel eens dat mensen een "Facebook" login aanbieden maar dan alleen het mailadres ophalen en alsnog de gebruiker een password laten kiezen. En dan sla je de plak aardig mis. Het voordeel hier is vooral dat, als je geen password van een gebruiker hebt, dit ook niet kan lekken.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Hydra schreef op maandag 30 september 2019 @ 15:59:
[...]


Ik zou in jouw geval absoluut voor een SPA gaan omdat het voor jou als stagair gewoon een mooie leerervaring is. Ik heb zelf absoluut geen recente ervaring met .Net core, maar ik kan me niet voorstellen dat er geen goeie documentatie is over hoe je daar een API mee bouwt.

Ook ervaring met het integreren van OAuth is waardevol en in mijn ervaring (wel in de Java hoek) is het over 't algemeen ook niet complex. Eigenlijk wat je vooral doet is een externe provider om het mailadres van de gebruiker vragen en, als je daar netjes antwoord op krijgt, ervanuit gaan dat je 'ingelogd' bent.

Je ziet ook wel eens dat mensen een "Facebook" login aanbieden maar dan alleen het mailadres ophalen en alsnog de gebruiker een password laten kiezen. En dan sla je de plak aardig mis. Het voordeel hier is vooral dat, als je geen password van een gebruiker hebt, dit ook niet kan lekken.
Ja, angular heeft ook mijn voorkeur inderdaad, omdat ik dan het meest nieuw leer.

OAuth laat ik nu inloggen, door de gebruiker na een klik op de button, een popup te geven die via de server naar Google redirect. Dan log je in, waarna de server jouw oauth gegevens ontvangt. Op basis van die gegevens verstrek ik een jwt token aan de client, waarna de client daarbij kan blijven authenticeren

Api bouwen met .Net Core is heel erg gemakkelijk, het lastigste blijft de authenticatie :P. Dat moet gelijk goed gebeuren

[ Voor 4% gewijzigd door Jantje2000 op 30-09-2019 16:02 ]

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Jantje2000 schreef op maandag 30 september 2019 @ 16:01:
Ja, angular heeft ook mijn voorkeur inderdaad, omdat ik dan het meest nieuw leer.

OAuth laat ik nu inloggen, door de gebruiker na een klik op de button, een popup te geven die via de server naar Google redirect. Dan log je in, waarna de server jouw oauth gegevens ontvangt. Op basis van die gegevens verstrek ik een jwt token aan de client, waarna de client daarbij kan blijven authenticeren
Prima toch? :) Wel nog even netjes de expiry op 10m zetten ofzo en de client laten refreshen maar dan ben je er volgens mij al.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 22-09 20:32
Hydra schreef op maandag 30 september 2019 @ 16:03:
[...]


Prima toch? :) Wel nog even netjes de expiry op 10m zetten ofzo en de client laten refreshen maar dan ben je er volgens mij al.
Ja, ik wist niet 100% zeker of dit een nette oplossing was. Het voelde een beetje hacky :P.

Als ik dan dus laten expiren na 10 minuten, heb je dan ook nog weer speciale refreshtokens nodig? En zou jij een ander token dan jwt aanraden, of maakt dat ook weer niet heel erg veel uit?

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.

Pagina: 1 2 3 Laatste