1

次のコードがあります。

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 では、プットは空のセッション [: ユーザー名] を出力します。何か案は?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

それはまだ動作しませんか?

4

1 に答える 1

1

正常に動作しています。コンソールへのアプリの出力を確認してください。それはあなたが期待することをしていないだけです。putsブラウザではなく標準出力に書き込みます。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
于 2012-07-13T13:49:25.637 に答える