Rails会话:session_store上的expire_after参数可防止存储会话

时间:2014-12-31 05:08:49

标签: session passenger ruby-on-rails-4.1

在engineyard / nginx / passenger / rails 4.1.5的生产和登台中,在提交登录表单后,找到并验证了用户,但未使用user_id设置会话,因此应用程序重定向回会话#new因为没有current_user。在开发时,登录正常。它也适用于digitalocean / nginx / puma / rails 4.0.3。将expired_after更改为2.week仍然不起作用。但是当我删除:expire_after参数时,它在生产中工作正常。我们对这个问题感到困惑。什么会阻止会话因为在本地和不同生产环境中工作的参数而被存储?谢谢!

def create # Sessions_Controller
  user = User.find_by(username: params[:username])
  if user && user.authenticate(params[:password])
    session[:user_id] = user.id
    redirect_to payments_url
  else
    flash[:now] = "Invalid combination of email and password. Please try again!"
    render 'new'
  end
end

# session_store
App::Application.config.session_store :cookie_store, key: '_app_session', expire_after: 24.hours

0 个答案:

没有答案