Значения сессий не сохраняются

Я использую микс JRuby(последний, 1.7 RC2)/Sinatra на сервере Тринидад для справочной информации.

get "/" do
    @user = session[:user] || [3,2]
    puts session[:user]
    haml :home
end

get "/signed_in" do
    "#{session[:loggedin]}"
end

post "/signup" do
    user = User.create(:username => params[:username], :password => Digest::SHA1.hexdigest(params[:password]))
    session[:user] = user
    session[:loggedin] = true
    puts session[:user]
end'

Что я ожидаю в качестве вывода (с комментариями):

# blank line
#<User:0x4049839a>
#<User:0x4049839a>

Но то, что я действительно получаю, это:

# blank line
#<User:0x4049839a>
# blank line

И после поста /signed_in все равно не будет иметь значения для вывода, когда это действительно должно быть true,

Почему эти ценности не сохраняются? Нет, я не использую дробовик, у меня включены сеансы, и у меня есть секрет сеанса.

1 ответ

Решение

Вы не можете хранить ресурсы DataMapper в переменных сеанса. Вместо этого поместите ключ к своему пользовательскому объекту в переменную сеанса и используйте помощник перед, чтобы установить @user = User.first(session[:user]) и использовать @user переменная экземпляра во всем приложении

Кроме того, вам не нужно session[:loggedin] вход, просто используйте @user.nil?

Другие вопросы по тегам