Gå til innhold

[web.py] session.kill() fungerer ikke som forventet


Anbefalte innlegg

(Mulig jeg vil få bedre svar om denne ble postet i python-forumet, så flytt gjerne om den passer bedre der, moderator.)

 

 

Jeg holder på å lage en enkel logg inn/ut funksjon i en web applikasjon jeg lager med python og web.py. Til dette bruker jeg da en brukerdatabase og sessions til å lagre informasjon om man er logget inn eller ikke.

 

Slik fungerer det idag:

  • Når sessions blir initialisert settes session.user-variabelen til False
  • Når brukeren besøker en side sjekker den om session.user variabelen er False, om den er det så vises logg inn-formen
  • Når brukeren logger inn og passord/brukernavn passer opp mot brukerdatabasen så lagres brukernavnet på sessions.user
  • Hvis bruker er logget inn vises logg ut-formen. Om brukeren klikker på denne så kjøres session.kill()

 

Hovedsaklig fungerer dette vel og bra, men problemer er på siste punktet når jeg kjører session.kill(). Log inn-formen vises da IKKE etter session.kill() er kjørt og man blir redirectet til "hovedsiden", altså session.user er IKKE false selv om session.kill() er kjørt. Det jeg hadde forventet var at session.kill() skulle initialisere sessions på nytt og dermed sette session.user til False(se første punktet).

 

Det som gjør det enda mer snodig er at om jeg refresher nettleservinduet etter jeg har blitt redirectet så vises log inn-formen. session.user har da altså blitt False etter jeg refreshet vinduet ETTER jeg klikket logg ut. Det virker altså som om sessions ikke blir initialisert før nettleservinduet er refreshet etter session.kill() er kjørt.

 

Jeg har funnet ut at jeg evt. kan sette session.user til False manuelt etter session.kill() og før redirecten, men dette virker litt stygt og unødvendig i hodet mitt, målet er jo at session.kill() skal gjøre dette, men er det rett og slett slik at session.kill() ikke initialiserer sessions på nytt? Sessions blir vel uansett initialisert på nytt når nettleservinduet endres(redirect etter session.kill())?

 

Her er litt relevant kildekode:

# setter session.user til False når session blir initialisert
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'user': False})
...
class logout(object):
def POST(self):
	session.kill()
	# session.user skulle da her helst vært False
	return render.index(user=session.user)

Endret av simenschi
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...