18. september 2008 - 14:48Der er
4 kommentarer og 1 løsning
Webapp uden cookies og jsessionid i urlen
Hej hej
Jeg har lavet en web app som modtager http get requests med nogen parametre i urlen og giver så et svar ud fra dem. Jeg bruger spring webflow og det kører på en tomcat server.
Problemet er at jeg ikke kan modtage jsessionid i cookies eller urlen. Når jsessionid mangler kan den ikke finde ud af hvor langt den er kommet i flowet.
Mit spørgsmål er så. Er det muligt at jeg selv kan danne et jsessionid som jeg så kan gemme og bruge? Jeg har et unikt id så jeg kan se forskel på brugerne i mit program.
Forklaring af setup. Brugeren sender et request til en gateway som danner et unikt id. Det id bliver sat på urlen til min webapp og den kalder min side med et get request. Min side svarer tilbage til gateway’en som så sender det tilbage til brugeren. Når brugeren svarer tilbage på beskeden til gateway’en så er alle informationer om cookies eller det jsessionid jeg har sat på urlen gået tabt. De har i gateway’en ikke mulighed for at gemme nogen informationer om jsessionid eller cookies.
Hvis den der sender requests til dig ignorerer baade cookies og URL rewriting, saa kan du ikke holde en container managed session.
Men hvis request parameterne indeholder et bruger id som korrekt vil identficere en "session", saa kan du lave dig en lille singleton med en HashMap med det unikke id som key, hvor du saa gemmer den information du skal bruge om sessionen.
Ikke en paen loesning, men givet restriktionerne saa er det nok det bedste du kan goere.
Jeg har oprettet en session manager i min app, som holder styr på de informationer jeg skal bruge, som flowExecutionKey, men hvis jsession ikke er sat til noget brugbart, så kan spring ikke bruge den conversation key som er indeholdt i flowExecutionKey, og så fejler den med at der ikke er en i gang væren session.
Så man kan sige at mit problem er at spring ikke opfører sig ordentligt uden et jsessionid.
Jeg har lige nu ikke den konkrete fejl, men vil poste den i morgen. Kan være det kan hjælpe.
Hvis gatewayen ikke kan maintaine det der skal til for at container managed sessions virker og hvis Spring kun virker med en container managed session, saa har du et problem.
Eneste mulighed jeg kan se er hvis et Filter kan saette en cookie baseret paa request parameter.
Undskyld det tog så lang tid før jeg har svaret tilbage på dette. Der kom lige et projekt ind fra højre der var vigtigere.
Jeg har nu lavet et servelet filter som laver noget url rewrite og så redirector til sig selv. Det virker fint, så tak for hjælpen. Hvis du smider et svar, så kan du få nogen point.
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.