我有以下代码:
enable :sessions
class CSFSWC < Sinatra::Application
post '/login' do
username = params[:username]
password = params[:password]
if csfsss.authenticate(username,password) == false
redirect '/'
# session[:loginsession] = nil
else
# Start session here
session[:username] = params[:username]
@sessionID = session[:username]
puts "Session : #{@sessionID}"
redirect '/main'
end
get '/main' do
puts "main session : #{@sessionID}"
end
在/ main中,puts打印出一个空会话[:username]。 有任何想法吗?据我所知,我理解Sinatra的会话:Sinatra Sessions。
它应该可以正常工作。
事实上,即使我从Sinatra Sessions
复制示例class CSFSWC < Sinatra::Base
enable :sessions
get '/foo' do
session[:message] = 'Hello World!'
puts "foo : #{session[:message]}"
redirect '/bar'
end
get '/bar' do
puts "bar : #{session[:message]}"
end
它仍然不起作用?
答案 0 :(得分:1)
它工作得很好 - 看看你的应用程序输出到控制台。它只是没有做你期望的。 puts
写入stdout,而不是浏览器。使用Sinatra,您返回的最后一个字符串是发送到浏览器的内容。这就是你想要的:
class CSFSWC < Sinatra::Base
enable :sessions
get '/foo' do
session[:message] = 'Hello World!'
# This just writes it to your log
puts "foo : #{session[:message]}"
redirect '/bar'
end
get '/bar' do
"bar : #{session[:message]}"
end
end