12

如何防止会话存储在 JSON/XML 调用上创建会话?

我的问题是我将会话保存在数据库中,并且它被多个 api 调用淹没。

我正在使用 Rails 3.2.2 和 Devise 进行身份验证。

4

4 回答 4

18

我的问题是与 Devise 内部的 Warden 有关。在用户通过身份验证后,我不得不“告诉”Warden 不要将用户存储在会话中。

resource = warden.authenticate!(:scope => resource_name, :store => !(request.format.xml? || request.format.json?))

希望对看到这个帖子的人有所帮助。

于 2012-05-23T16:03:30.250 回答
4
resource = warden.authenticate!(:scope => resource_name, :store => is_navigational_format?)
于 2013-04-03T14:29:00.497 回答
1

理论上如果你不使用它,它现在不会加载。直到 rails 2.3.8,你可以这样做:

# application_controller.rb
session :off, :if => :sessionless_request?

protected

def sessionless_request?(request)
  request.format == :xml || request.format == :json
end 

现在你可以对这个 gem 做同样的事情 https://github.com/kares/session_off

于 2012-05-23T10:36:52.140 回答
-4

您应该在模型中使用“devise :timeoutable”并在 config/initializers/devise.rb 中使用 config.timeout_in = 0

重启你的服务器!

于 2012-09-13T09:48:16.640 回答