enable :sessions
get '/foo' do
session['m'] = 'Hello World!'
redirect '/bar'
end
get '/bar' do
session['m'] # => 'Hello World!'
end
Parece que no funciona.Cómo utilizar la sesión de sinatra
enable :sessions
get '/foo' do
session['m'] = 'Hello World!'
redirect '/bar'
end
get '/bar' do
session['m'] # => 'Hello World!'
end
Parece que no funciona.Cómo utilizar la sesión de sinatra
¿Quizás tiene deshabilitadas las cookies en su navegador web? Las sesiones de Sinatra usan cookies por defecto.
Aquí está mi aplicación de prueba:
require 'sinatra'
enable :sessions
get '/foo' do
session['m'] = 'Hello World!'
redirect '/bar'
end
get '/bar' do
<<-ENDRESPONSE
Ruby: #{RUBY_VERSION}
Rack: #{Rack::VERSION}
Sinatra: #{Sinatra::VERSION}
#{session['m'].inspect}
ENDRESPONSE
end
y aquí está en acción:
phrogz$ curl --cookie-jar cookies.txt -L http://localhost:4567/foo
Ruby: 1.9.2
Rack: [1, 1]
Sinatra: 1.2.3
"Hello World!"
phrogz$ curl -L http://localhost:4567/foo
Ruby: 1.9.2
Rack: [1, 1]
Sinatra: 1.2.3
nil
phrogz$ cat cookies.txt
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
localhost FALSE / FALSE 0 rack.session BAh7BkkiBm0GOgZFRkkiEUhl...
Sin cookies, su redireccionamiento funciona, pero será como si es una marca nueva sesión después de la redirección, con la sesión comenzando desde cero.
Realmente gracias, tu método es realmente genial. La causa es que uso el servidor de escopeta. – chenge
@chenge Me alegro de que esto haya ayudado. Si siente que esto solucionó su problema, debe aceptarlo como la respuesta (presione la marca de verificación al lado de la respuesta). Si la respuesta de @ Konstantin ha resuelto su problema, márquelo como aceptado. – Phrogz
útil, pero no es la solución final. – chenge
¿Estás usando escopeta? De ser así, haga lo siguiente:
configure(:development) { set :session_secret, "something" }
Esto ya no será necesario en Sinatra 1.3.
funciona. ¿Cuál es tu versión de ruby y sinatra? –