Railsアプリケーションでセッションの有効期限を動的に設定しようとしています。私のローカルではうまく動作しますが(WEBrickで動作します)、プロダクションでは動作しません(ApacheとPassenger 3.0.19を使用)レール2.3.15。セッションの有効期限を変更できません
使用しているRubyのバージョンは1.8.7、Railsのバージョンは2.3.15です。
セッションは、デフォルトでは、このように構成されています
ActionController::Base.session = {
:key => '_my_session',
:secret => 'some_key'
}
ActionController::Base.session_store = :active_record_store
私はクッキーの有効期限があるべき、ユーザーティックときに「私を覚えて」、ウェブサイトへの機能「私を覚えて」を追加しようとしています2週間に設定します。私はローカルでコードをテストするとき
if params[:remember_me]
ActionController::Base.session_options[:expire_after] = 2.weeks
else
ActionController::Base.session_options.delete :expire_after
end
これは正常に動作します:私は(ページにログインを開く)のウェブサイトへの最初の要求を送信するときには、デフォルトの有効期限とCookieを作成します(その際には、有効期限が切れますブラウザが閉じられる)、次に「私を覚えて」、「ログイン」を押します。私のコードは、有効期限を2週間に設定して実行され、ウェブサイトのメインページにリダイレクトされます。レスポンスに「set-cookie」が表示されるので、2週間後にクッキーが期限切れになるように更新されます。
しかし、乗客を使用するプロダクションにコードをデプロイすると、動作しません。ログインページを開いたときに作成されたデフォルトの有効期限を持つクッキーが表示されますが、 "remember me"サーバーはログインしてメインページにリダイレクトされますが、有効期限が設定された新しいCookieは私に送信されません。
2週間後(動的に変更するのではなく)に期限切れになるように、デフォルト設定を変更すると、基本的にすべてのユーザーが「覚えています」というメッセージが表示され、最初から正しい有効期限のCookieが作成されます。しかし、私が設定を動的に変更すると、それらを無視するように見え、クッキーに反映されません。私はいくつかのログをプロダクションに追加し、ActionController :: Base.session_options [:expire_after]が本当に更新されるのをはっきりと見ることができますが、新しいクッキーは決してクライアントに送られません。 私はグーグルをして、多くのアドバイスに従いましたが、どれも私のために働いていません。
ありがとうございます!