Данные сеанса не сохраняются в простой аутентификации Sinatra

Я создал простую аутентификацию для Sinatra, однако объект сеанса, похоже, очищает ВСЕ пользовательские ключи. Например, когда пользователь входит в систему:

session[:user_id] = current_user.id

Это эффективно сохраняется в объекте сеанса для текущего запроса. Когда возникает новый запрос, сеанса [: user_id] больше нет. Сессия активна, куки включены. Я попробовал все, что я не могу понять, в чем дело (вот соответствующий код: https://gist.github.com/ksiomelo/7656296).

приложение:

 use Rack::Session::Cookie , :secret => "82e042cd6fde2bf1764f777236db799e"

 enable :sessions # for flash messages

помощники:

 def require_auth
  unless session[:user_id]
    flash[:error] = "You need to be logged in."
    redirect to("/login")
  end
end

def current_user
  @current_user ||= User.find_by_id(session[:user_id]) if session[:user_id]
end

войти в систему:

   authorized_user = User.authenticate(params[:email],params[:password])
      if authorized_user
        # update session / redirect
        session[:user_id] = authorized_user.mongo_id.to_s 
        session.options[:expire_after] = 2592000 unless params[:remember].nil? # 30 days

        # redirect to the wizard
        flash[:info] = "Welcome back #{authorized_user.first_name}"
        redirect to("/home")

1 ответ

Решение

Скорее всего, вам следует попытаться установить поставщика для обработки сеанса, например:

use Rack::Session::Pool, :expire_after => 2592000

Рад помочь.

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