Avatar billede dennish Nybegynder
12. oktober 2009 - 21:44 Der er 6 kommentarer og
1 løsning

redirect ved session timeout

Hejsa
Håber der er nogen der kan hjælpe. Jeg har i min web.xml defineret min session til at kæøe i 20 min. Når sessionen (med sessions objekter ) timer ud vil jeg gerne redirect til en defineret JSP side. Jeg har sat et filter op: SessionExpireFilter implements Filter. Min mit filter kræver at brugeren interagerer med min JSP applikation dsv. hvis brugeren er inde på side1 og går til frokost. Når han kommer tilbage ser han stadigvæk side1. Så kan han indtaste i en masse tekstfelter. Der er først når han trykker gem at det fanges at sessionsobjektet er nedlagt.

Jeg vil egentllig gerne have en tråd der holder øje med at sessionen er aktiv, og hvis den bliver inaktiv (når en bruger f.eks går til frokost) skal det fanges at sessionen er nedlagt og redirectes til en JSP side. så når brugeren kommer tilbage vil han blive mødt ned den definerede JSP side.

Jeg tror vist nok det er noget client side kode jeg skal bruge. Men lige hvordan aner jeg ikke ?. Nogen der har et kode eksempel og gerne en lille forklaring på hvordan jeg får det sat op ?
Avatar billede arne_v Ekspert
12. oktober 2009 - 21:50 #1
Når session er expired så ryger brugeren til en foruddefineret side. Nemlig login siden.

Hvis du poller fra JavaScript så holder du session kunstigt i live.

En lille JavaScript timer som checker om siden har stået på skærmen i mere end 20 minutter og så skriver "Du får en fejl når du submitter" ??

Jeg gætter på at du vil være bedre stillet ved at analysere business requirements og komme op med en anden løsning.
Avatar billede dennish Nybegynder
12. oktober 2009 - 22:17 #2
arne>> Nu er jeg ikke lige med på hvad du mener. Men er det ikke meget almindeligt at hvis man er inaktiv på en side så timer man ud og så vil man se en side. Din session er time out venligst log ind igen. Eller tager jeg helt fejl ?
Lige nu tror brugeren faktisk at han er "online" og kan indtaste i cirka 15 tekst felter. Når han så trykker gem opdages det at sessions objektet er nedlagt og han får en fejlbesked. Brugen synes det er meget irriterende at han først opdage time out  ved tryk på gem knappen.
Avatar billede arne_v Ekspert
12. oktober 2009 - 22:28 #3
Almindeligt? Ikke på de sider som jeg bruger! Men jeg ved ikke om man kan konkludere enoget om almindeligt ud fra det.

Du kan prøve med en lille stump JS kode som køres efter 20 minutter.

Jeg ville nok foretrække at lave det således at de ved session timeout ryger til login side og at de efter login kan recover (læs: redde data).
Avatar billede dennish Nybegynder
12. oktober 2009 - 23:05 #4
Arne>> Ja. Der er da rigtigt at hvis man laver en tråd der står og request så holder man jo sessionen "kunstigt" i live. Jeg skal nok lave et script der kører hver 20'ende minut. Scriptet skal så forespørge på sessionen. Da jeg ikke lige er så pokkers skrap til javaScript kunne du måske give et eksempel på noget kode. så jeg ved i hvilke retning jeg skal gå.
Avatar billede dennish Nybegynder
16. oktober 2009 - 13:03 #5
Fik lavet et javascript der ser således ud:
Jeg bruger dwr til at requester sessions objektet.

// 300000 5 minutes
var intervalId = setInterval ( "checkSession()",300000);
function checkSession() {
    // call server sesssion object
    Sessions.getSessionModel(callback=function(data1){
        if(data1 == null) {
            window.location = "sessiontimeout.jsp"   
        }
    });   
}
java script:%20void(0);
Avatar billede dennish Nybegynder
14. december 2009 - 16:16 #6
Arne>> smider du ikke et svar da det var dine kommentarer der fik mig på rette spor
Avatar billede arne_v Ekspert
14. december 2009 - 16:27 #7
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester