Flash Lite en basic HTTP auth

Ik ben de laatste dagen erg druk bezig geweest met een (erg cool) Flash Lite project (waar ik binnenkort eindelijk over zal schrijven). Hoewel deze post over mijn ervaring in Flash Lite gaat is het in Actionscript 2 voor Flash Player ook van toepassing. Voor Actionscript 3 zal de werkwijze vrijwel analoog zijn.

Tijdens het ontwikkelen van de applicatie ben ik op het probleem gestoten dat ik data moest inladen die gebruikersspecifiek waren. Daarenboven zat er ook gevoelige data bij, die dus beveiligd moest verstuurd worden.

Mijn collega (die de server-side van het project ontwikkelt) stelde een aantal mogelijkheden voor waaronder basic HTTP authentication. Dit leek me een goede manier om het te proberen. Jammer genoeg bleven mijn zoektochten op Google naar duidelijke uitleg onbeantwoord. Door het samenrapen van een 3 tutorials en bronbestanden had ik het eindelijk door.

In feite is basic HTTP auth in Flash (Lite) echt doodsimpel. (Ik versta niet waarom iedereen daar altijd zo’n rond-de-pot-gedraai aan toevoegd.)

To the point: Stel ik wil XML inladen (mbv Actionscript 2). Dat doen we over het algemeen zo:

[actionscript]var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xmlComplete;
xml.load(‘http://example.com/somepage.php’);

function xmlComplete(success){
if(success){
//logica komt hier
}
}[/actionscript]

Heel basic, zonder authentication. Niets nieuws, dus. Maar wat als somepage.php je om een gebruikersnaam en wachtwoord vraagt?

Voorbeeld van een Basic HTTP authentication venster

Dit kan blijkbaar heel makkelijk opgelost worden, door gebruik te maken van de addRequestHeaders method (die zowel voor de XML class, de webservice class, alsook voor LoadVars class beschikbaar is), en de Base64 class (download hier).

Je code ziet er dan als volgt uit.

[actionscript]var auth:String = Base64.Encode(“myUsername:myPassword”);
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xmlComplete;
xml.addRequestHeader(“Authorization”,”Basic “+auth);
xml.sendAndLoad(‘http://example.com/somepage.php’,xml);

function xmlComplete(success) {
if(success){
//logica komt hier
}
}[/actionscript]
Er zijn 2 grote verschillen. In dit voorbeeld gebruiken we de addRequestHeaders method om de gebruikernaam en het wachtwoord aan de requestHeaders van het XML object toe te voegen. Deze moeten wel eerst via Base64 geëncode worden alvorens dat de basic HTTP auth deze ontvangt. Daarnaast gebruiken we ook de sendAndLoad method zodat de headers meegestuurd worden naar de server.

Het is dus op zich erg simpel, maar je zou bijna niet geloven hoeveel tijd ik gespendeerd heb om tot deze conclusie te komen. Ik kan het nog altijd niet geloven als ik naar de simpelheid ervan kijk.
Hopelijk kan ik enkelen hiermee wat tijd besparen.

Ronny

view all posts

Ronny is a freelance frontend developer with a wild passion for creativity and a relentless hate against flat design. Ronny spent years as a Flash developer before moving to HTML5 and rediscovering fun and happiness.

0 Comments Join the Conversation →


Leave a Reply

Your email address will not be published. Required fields are marked *