2010-11-23 10 views

Respuesta

43

sólo tiene que utilizar

session.clear 

para destruir la sesión.

+0

Desde el ejemplo de OP es claro ('enable: sessions') que están usando Sinatra o un framework ruby ​​similar, sin embargo, preguntaron sobre eliminar la sesión usando' Rack :: Session :: Cookie' directamente. ¿La solución proporcionada en esta respuesta se aplica a eso, o es específica de Sinatra/Rails? De acuerdo con http://stackoverflow.com/questions/10451392/how-do-i-set-get-session-vars-in-a-rack-app '# session', es un método específico de Sinatra/Rails/.. y las aplicaciones de rack simples no lo tienen. Si esto es cierto, ¿alguien sabe cuál es la forma correcta de estante para solucionarlo? –

+0

no funciona para mí, lo probé un par de veces. Tengo una aplicación muy simple con 'enable: sessions' –

+0

@jj_ Nope,' sinatra' y 'rails' usan middleware de rack. –

3

Depende de cómo se crea la sesión. Simplemente tiene que anular la entrada de la sesión. Aquí hay un ejemplo simple, cómo crear y destruir sesiones.

get '/login' do 
    session[:username] = params[:username] 
    "logged in as #{session[:username]}" 
    end 

    get '/logout' do 
    old_user = session[:username] 
    session[:username] = nil 
    "logged out #{old_user}" 
    end 

También puede comprobar este ejemplo: https://gist.github.com/131401

+2

Hmm, lo había intentado, pero la cookie de rack.session todavía existe después de "cerrar sesión". – ecoffey

+0

@ecoffey ¿está seguro de que es la misma cookie? Si usa 'session.clear', probablemente sea una sesión nueva, pero la anterior se habrá destruido. La (s) clave (s) de sesión nil-ing puede (n) mantener la cookie original pero carecer de cualquier valor (es). – xentek

Cuestiones relacionadas