会话在Safari Mobile上过期

时间:2013-07-04 03:57:11

标签: ruby-on-rails mobile cookies

我正在使用rails 3.2.13,我想将active_record会话存储更改为24小时,所以我设置:

Uauauanamobile::Application.config.session_store :active_record_store, :expire_after => 24.hours 

在config / initializers / session_store.rb中,但如果我检查我的iPhone Safari的cookie,我看不到_session_id cookie,当然也不存在(ominauth失败)。 这是一个错误吗?

我需要设置到期时间,因为如果我将我的网站用作网络应用程序(使用添加到主屏幕iOS功能),否则应用程序永远不会保存会话。

1 个答案:

答案 0 :(得分:0)

我在另一个问题中找到了答案,但作为参考我将复制它(另一个问题是针对另一个问题,但解决方案是相同的)

这适用于rails 3.x,因此解决方案是在每个请求中设置过期时间,如下所示:

    class ApplicationController < ActionController::Base

      after_filter :short_session

      ...

      def short_session
        request.session_options = request.session_options.dup
        request.session_options[:expire_after] = 1.minute
        request.session_options.freeze
      end

这是此代码的原始答​​案。

How to I dynamically set the expiry time for a cookie-based session in Rails

是的,这解决了iOS中的webapp模式无法保存会话的问题。