Avatar billede tien Nybegynder
27. april 2007 - 11:30 Der er 12 kommentarer og
1 løsning

session timeout

Hej
er der nogen der kan give mig et script til at omgå en session timeout?

Session'en skal holdes i live så længe siden ikke forlades...
Min session timeout er på serveren sat til 1 time.
Avatar billede softspot Forsker
27. april 2007 - 11:40 #1
du kan smide en lille skjult iframe ind på siden (aæt style="display:none" på den) og så indlæse en side som indeholder en lille stump javascript der reloader en asp-side på serveren (som ikke gør andet end at load).

<iframe src="keepalive.asp" style="display:none"></iframe>


keepalive.asp:

<%@ language="vbscript" %>
<html><head><script type="text/javascript">
window.onload = function() { setTimeout("window.location.reload(true)", 60000) }
</script>
</head><body></body></html>


denne løsning burde ikke afgive nogen lyde eller andre gener for slutbrugeren, så det burde være en rimelig løsning. Alternativt kan du lægge noget script ind i siden som loader keepalive.asp ind i et skjult img-element, men iframe-løsningen er vist den der kræver mindst kode på siden...
Avatar billede roenving Novice
27. april 2007 - 11:40 #2
Hvorfor skal du omgå det ?-)

-- jeg bruger selv en side, der via js åbner en række andre sider efter et fast interval, bl.a. for at undgå at f.eks. Eksperten timer en session ud
Avatar billede softspot Forsker
27. april 2007 - 11:42 #3
Den iframe loader så hvert minut, hvilket måske er lidt for ofte, men du kan bare sætte timeout til en højere værdi end 60000 (det er millisekunder, så du kan bare finde regnestokken frem :)).
Avatar billede softspot Forsker
27. april 2007 - 11:47 #4
En anden løsning kunne være at du lavede en autologin-feature (der er sikkert argumenter imod dette), som aktiveres i det tilfælde at loginoplysningerne ikke findes i session. Jeg har selv eksperimenteret med dette ved hjælp en en cookie som indeholder nøglen til brugerens oplysninger. Den kontrollerer jeg så ved hver sideindlæsning på serveren. Hvis session er tabt, så starter jeg blot en ny og sætte de session-variable der nu var relevante. Denne løsning er dog lidt mere kompliceret, hvis du han mange session-variable indlæst, men jeg vil mene at det stadig kan lade sig gøre, hvis man sørger for at gemme sessioninfo i en database, som så kan indlæses ved genstart af session. Jeg er klar over at det gør session tungere, hvis man har meget opdatering af denne, men så har man nok slet ikke problemet.. :)
Avatar billede tien Nybegynder
27. april 2007 - 11:49 #5
nu bruger jeg ikke asp men jsp. Jeg går ud fra at princippet er ens!?
Avatar billede softspot Forsker
27. april 2007 - 11:52 #6
autologin kunne se således ud (ASP):

checklogin.asp:

<%
if session("userid") & "" = "" then
  if request.cookies("autologin") & "" = "" then
    response.redirect "/login.asp"
  else
    session("userid") = response.cookies("autologin") & ""
  end if
end if
%>

Denne asp-fil kan så bruges på de sider som kræver login som en include eller kaldes via Server.Execute.

<!-- #include file="checklogin.asp" -->
<html>
  <head>
    <title>Denne side er beskyttet</title>
  </head>
  <body>
    sideindholdet som er beskyttet...
  </body>
</html>
Avatar billede softspot Forsker
27. april 2007 - 11:53 #7
Jeg kender desværre ikke JSP, men det vil jeg da tro... :)
Avatar billede softspot Forsker
27. april 2007 - 11:55 #8
Jeg ved du ikke skal bruge dette kode, men for en god ordens skyld vil jeg lige rette en fejl i checklogin.asp

<%
if session("userid") & "" = "" then
  if request.cookies("autologin") & "" = "" then
    response.redirect "/login.asp"
  else
    session("userid") = request.cookies("autologin") & ""
  end if
end if
%>

og så tilføje at når brugeren logger på, så skal cookien naturligvis sættes til brugerens id:

response.cookies("autologin") = session("userid") & ""
Avatar billede tien Nybegynder
27. april 2007 - 11:56 #9
jeg vil gerne undgå at brugeren skal logge ind igen i tilfælde af at sessionen er udløbet
Avatar billede roenving Novice
27. april 2007 - 12:02 #10
Så brug softspots første forslag, for så vil sessionen kun blive holdt i live, hvis brugeren bliver på siden !-)
Avatar billede tien Nybegynder
27. april 2007 - 12:50 #11
@softspot: venligst læg et svar ind - din løsning kan bruges:-)
Avatar billede softspot Forsker
27. april 2007 - 13:06 #12
Kommer her :)
Avatar billede softspot Forsker
27. april 2007 - 13:28 #13
Tak for point :)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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