我正在使用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
?
答案 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。