(Men bare du kan jo bruge hvilken som helst SWF, som du kan se på nettet til at teste med. men den ovenstående ejer jeg hvis det er det du tænker på :) )
Desværre kan jeg ikke umiddelbart oversætte PHP-koden - det lader nemlig ikke til at sessionen bliver sendt med når der kaldes på SWF-filen. Dette er en vigtig forudsætning for at den viste PHP kode skal fungere...
Heldigvis er det alligevel muligt at opnå samme effekt i ASP.Net. :^)
Opskriften:
I din web.config fil tilføjer du noget i stil med dette:
Dette kompileres hvorved du får en DLL fil. Upload denne til bin folderen på dit site, og du er kørende...
Læg dine SWF-filer i app_data folderen. Dine links til dem i din HTML-kode ganske som synes de skal se ud - den leder aælligevel efter dem i app_data folderen.
Hey! Det ser super ud!! Jeg går igang med at afprøve det nu...jeg har dog lige nogle spørgsmål mht. din kode....normalt lægger jeg mine SWF'er i forskellige mapper, altså afhængig af hvem der skal have adgang til dem. Dette styrer jeg via det integrerede "Asp.Net Configuration"...Men nu vil du have at alle skal ligge i samme mappe (App_data)...er det en speciel måde du vil sikre div. SWF'er kun at blive tilgået af den korrekte type af brugere...?
Hvad synes du selv om den måde at beskytte en SWF på? Kan du se en måde hvorpå man alligevel vil kunne downloade filen? og evt. noget mere man kan gøre for at gøre det mere sikkert?
Problemet med dette er at man så muligvis godt kan få lov til at indtaste url'et direkte til SWF-filen. Jeg kan ikke helt gennemskue om man ad den vej kan få lov til at downloade filen. Formentlig ikke, men det kan du jo afprøve.
Det kan man dog under alle omstændigheder: filen bliver jo downloadet til brugerens browser - ellers kan den ikke ses. Man skal selvfølgelig være lidt opfuíndsom for at få den, men det kan lade sig gøre.
At placere filerne i app_code vil sikre mod at man kan få fat i filerne uden om din sikkerhed. Jeg ved ikke lige hvordan dette kan kombineres med at du har forskelleige brugere med forskellige rettigheder...
Hej igen...jeg vil gerne have at filerne ligger i app_data mappe så...men pga. jeg bruger bruger-rettigheder...så er jeg blevet nødtil modificere kode lidt, således at den korrekte sti til "swfFile" iAccept metoden...Det ser ud til at virke, en efter Accept metoden smides exceptionen i "IsReusable"...hvorfor gør den det? jeg er ikke med på hvad denne metode gør?
Hej igen! NU virker det tror jeg :) det hjalp at rette IsReusable...jeg kan dog ikke pt. teste det helt igennem da jeg kun kører localhost og derfor er requestet altid det samme...og jeg kan jeg hente swf'en ned ligemeget hvad...men afprøver det snart på en rigtig webserver, så skal jeg nok skrive igen!
Bare lige en ting...jeg har alle SWF filer liggende i App_Data mappen...url'en jeg skriver i HTML'en til SWF'en er fuldstændig ligemeget ik`? Den skal bare indeholde det korrekte filnavn ik`? Dvs. man kan skrive en helt forkert og forvirrende URL blot så det er undnu sværer at finde ud af hvor filen ligger henne?
Bare lige en ting...jeg har alle SWF filer liggende i App_Data mappen...url'en jeg skriver i HTML'en til SWF'en er fuldstændig ligemeget ik`? Den skal bare indeholde det korrekte filnavn ik`? Dvs. man kan skrive en helt forkert og forvirrende URL blot så det er undnu sværer at finde ud af hvor filen ligger henne?>
Derudover, hvis man ikke kan undgå at ens SWF filer gemmes i TEMP mappen (trods jeg ikke selv kan se deres SWF i min TEMP mappe) hvad pokker hjælper denne metode så? Reelt set? Det er selvfølgelig forvirrende for folk som bruger et såkaldt "Flash catcher/donwloader" program...da det blot ripper en side for SWF'en ved at travesere HTML'en for SWF-url'er...men det sidste er jo TEMP mappen...kan man virkelige ikke gøre noget ved dette problem?
Jeg kan sagtens se hvor at den bliver lagt, men når jeg kigger efter der så er den dog væk. Det skulle ikke undre mig, hvis det hele var toppet af med en besked til browseren om ikke at cache. Egentlig meget sbart hvir man vil gøre det ekstra svært at finde den.
Men selvfølgelig kan man få fat på filen, hvis man absolut vil. Det er i virkeligheden meget logisk: Hvis browseren skal kunne afspille filen er den nødt til at have den. Ergo må filen blive overføret til klient PC'en.
Hvis jeg *virkelig* ville have filen så skrev jeg bare et lille program som emulerede at det var en almindelig browser. I stedet for at slette filen efter at have modtaget den ville den så bare gemme den.
Hej igen...yes, jeg er men på teorien...men tiden går og folk er jo opfindsomme, så det kunne jo tænkes at der var tænkt over en løsningen på dette problem, således at det ikke var "bare lige" at snuppe ens filer...thats all...:)
Mit sidste spørgsmål er så: Hvordan gør jeg således at mine SWF filer ALDRIG bliver cached i TEMP mappen? Altså jeg har allerede sat et "Expires" META TAG i min side som gør at siden "forældes" med det samme...og det gør at apsx, SWF filer mv. downloades på ny for hvert request...MEN jeg kan dog stadig finde alle min filer i TEMP mappen...så hvad mere kræver det?
Korrekt. Og ja, en HTTP-handler er matchet med en bestemt fil type. Alternativt kan man lave et HTTP-modul som kan klare mange forskellige typer af requests.
Hej igen! Jeg er desværre løbet ind i nye problemer...den dll du lavede virker helt efter hensigten når jeg kører det hele lokalt! Men når jeg publisher mit asp.net 2.0 projekt og uploader det til en server på internettet - ja så vises Flash / SWF filer slet ikke...det er bare hvidt det hvor de skulle have været...den kan åbenbart ikke finde filerne??
Ide til hvordan jeg løber dette?? Opretter gerne et nyt spørgsmål hvis du ønsker points! Bare sig til!
Umiddelbart kan jeg ikke lige se hvorfor den skulle fejle...
Har du administartor rettigheder til serveren og/eller har du adgang til et sted hvor du kan udskrive (f.eks. til filsystem eller en database)? For så kan vi lave noget debugging.
Hey, jeg har nu aktiveret trace dedugging lokalt og på serveren...lokalt kan jeg at at dll'en bliver kaldt, men på remote serveren kan jeg ikke se at den kaldes...:( ??
Jeg kan fortælle at det ikke har noget at gøre med, at jeg brugte App_Data mappen...har nemlig lige prøvet at ligge filerne i en anden mappe, samt at rette stien i dll'en....men uden held...
13/12-2007 23:12:47> Et simpelt ja eller nej er fint nok. Jeg havde ikke nogen planer om selt at skulle logge op mod dine servere eller noget. Jeg ville bare gerne vide hvor at vi kunne skrive eventuelt debug til - til en fil eller til en database.
13/12-2007 23:13:13> Jeg har ikke den store erfaring mht. at administrere en IIS. Men umiddelbart kan jeg ikke se at der skal gøres noget specielt ud over det der allerede er beskrevet ovenfor. Det kan selvfølgeligt være at webhotellet har disablet muligheden for at bruge HttpHandlere...
13/12-2007 23:32:40> Er der en flash på den side?
14/12-2007 15:51:56> Det er skam ikke nødvendigt. :^)
Jeg forstår ikke helt hvad du gerne vil have af info...mht. server...ja jeg har en databasen vi kan bruge til test...jeg har også adgang til serveren via FTP, men sitet ligger som sagt hos en udbyder og jeg kan derfor ikke selv pille fysisk ved serveren... Men kan selvfølgelig ringe til dem, hvis vi ved hvad der skal ændres...
Ja, den hvide firkant på siden er en flash-container hvori, der ikke er loadet nogen SWF fil pga. den ikke kan finde den...pga. HttpHandleren ikke bliver brugt...
oooh my gosh....har lige snakket med udbyderen igen...fordi jeg ikke følte at dem jeg snakkede med de sidste par gange var overbevisende...og nu sagde en anden fanme at det IKKE er muligt, at bruge sin egen HttpHandler!! aarrrrhhh....ja undskyld...men det er bare frustrerende at have brugt så meget tid på det, når fejlen så ikke en gang ligger på min side...
Haløjsa! Så kom der ENDELIG hul igennem...ja nu hvor det er juletid, hvis jeg tillade mig at kalde dem nogle amatør-nisser...Fik dem til at konfigurere IIS'en og nu spiller det hele ;)
Du skal have mange tak for hjælen!
btw, nu hvor jeg har dig, kender du så noget til noget godt Url rewriting i dot net?
Det er Jul det er cool, men jeg har stadig et spørgsmål! :)
Alt virker efter hensigten...dvs. så længe man ikke er logget ind på sitet...Jeg har 3 forskellige bruger niveauer i mit site...via asp.net configuration...og når man logger ind og tilgår sider som kun reg. brugere kan tilgå, ja så kaldes HttpHandleren ikke!
Indtil videre har jeg kun tilføjer HttpHandleren i web.config filen som ligger i roden af projektet...idet jeg ønsker det skal virke ens for alle niveauer, har jeg også prøvet at tilføje den samme HttpHandler men forskellige parametre i default web.config filen...(forskellen ligger blot i, hvad variablen path sættes til...) Jeg har også prøvet at rode med div. web.config filer, som ligger i hver mappe, som er knyttet til hvert enkelt niveau...men uanset hvad jeg prøver på...så spiller det ikke 100%...:(
Når den prøver at loade en side som kræver rettigheder, så bliver statusbaren blot stående et givet sted i IE....hvis jeg trykker F5...kan det være den rykker sig lidt frem eller tilbage...men meget andet sker der ikke..jo nogle meget få gange blev flash app. fasktisk vist...ja det fatter jeg ikke selv noget af...da det jo enten burde spiller 100% eller også slet ikke...
Et eller andet sted burde det jo ikke være nødvendigt...men jeg kan se via Trace.axd og debug, at HttpHandleren ikke bliver kørt, end andre sider end dem som ligger i roden af sitet...trods de indeholder swf filer...
Jeg har desværre erfaret at nogle programmer let går forbi nedenstående tjek fra HttpHandleren:
if (CultureInfo.InvariantCulture.CompareInfo.Compare( request.Url.Host, request.UrlReferrer.Host, CompareOptions.IgnoreCase) != 0)
Det er åbenbart pga. at div. programer sætter UrlReferrer til roden af requestet...så i stedet for www.domain.dk/test/file/flash.swf så er det kun www.domain.dk hvilket jo altid er det samme...:( Forstå du hvad jeg mener? Er der noget andet jeg kan gøre? Jeg kan jo ikke tjekker på IP, da klienten selvfølgelig altid vil requeste fra en anden IP end serverens....Sig til hvis du vil have, at jeg opretter et nyt spørgsmål, så du kan få flere points!
1) Det dur nok ikke at forsøge at skrive en cookie til klienten - den lider sikkert under samme fejl som gjorde at den oprindelige model med sessions ikke virkede.
2) Du kan måske alligevel bruge IP - hvis det kaldende IP kun har været "aktiv" en gang, så er det nogen som linker direkte. Hvis de derimod har været involveret tidligere så er det ok nok.
Når det så er sagt, så er der næppe nogen 100 % effektiv opskrift på at forhinder det.
Jeg har løst problemet, jeg tjekker blot om "request.UrlReferrer" (ikke "request.UrlReferrer.Host") er præcis den samme aspx side som udfører kaldet i min website...og det virker! :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.