防止在rails 3.2.2上为RESTful api创建会话

时间:2012-05-23 10:03:43

标签: ruby-on-rails-3 session devise warden session-storage

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

我的问题是我在数据库中保存会话,并在多个api调用中泛滥。

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

4 个答案:

答案 0 :(得分:18)

我的问题在于Devise中的Warden。在用户通过身份验证后,我必须“告诉”Warden不要将用户存储在会话中。

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

希望能帮助看到这个帖子的人。

答案 1 :(得分:4)

resource = warden.authenticate!(:scope => resource_name, :store => is_navigational_format?)

答案 2 :(得分: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 

现在你可以用这个宝石做同样的事了 https://github.com/kares/session_off

答案 3 :(得分:-4)

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

重新启动服务器!