设计自定义策略:仍设置会话Cookie

时间:2015-07-26 20:11:58

标签: ruby-on-rails ruby session cookies devise

我正在使用Devise来验证我的Ruby on Rails应用程序的用户。到目前为止,我一直在使用标准的基于Cookie的会话来验证用户,但现在我有了允许基于令牌的身份验证的要求,我通过custom Warden strategy实现了这一点。

为了这个例子,我的自定义策略代码是:

module Devise
  module Strategies
    class CustomAuthenticatable < Base
      def valid?
        params.has_key? :email
      end 

      def authenticate!
        success!(User.find_by(email: params[:email]))
        #fail
      end 
    end 
  end 
end

所以这对第一个请求按预期工作:当我GET /api/my_controller/url?email=user@example.com用户通过身份验证时,我得到了预期的响应。

但等待,然后我再发出第二个请求:GET /api/my_controller/url,用户仍然经过身份验证。

经过进一步检查,我发现正在发送Set-Cookie,并设有设计会话。

所以我的问题在这里:

如何在使用自定义策略时停用Set-Cookie

1 个答案:

答案 0 :(得分:1)

您可以阻止创建会话,如此处所述。

Prevent session creation on rails 3.2.2 for RESTful api

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

对于其他一些选项,请考虑Rails 3 disabling session cookies