Ruby on rails 设计定制策略:仍然设置会话cookie
我正在使用Desive对RubyonRails应用程序的用户进行身份验证。到目前为止,我一直在使用标准的基于Cookie的会话对用户进行身份验证,但现在我需要允许基于令牌的身份验证,并且我通过一个 在本例中,我的自定义策略代码为:Ruby on rails 设计定制策略:仍然设置会话cookie,ruby-on-rails,ruby,session,cookies,devise,Ruby On Rails,Ruby,Session,Cookies,Devise,我正在使用Desive对RubyonRails应用程序的用户进行身份验证。到目前为止,我一直在使用标准的基于Cookie的会话对用户进行身份验证,但现在我需要允许基于令牌的身份验证,并且我通过一个 在本例中,我的自定义策略代码为: module Devise module Strategies class CustomAuthenticatable < Base def valid? params.has_key? :email end
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
模块设计
模块策略
类CustomAuthenticatable
因此,当我GET/api/my_controller/url?电子邮件时,这与第一个请求的预期效果一样=user@example.com
用户已通过身份验证,我得到了预期的响应
但是等待:当我发出第二个请求时:GET/api/my_controller/url
,用户仍然经过身份验证
进一步检查后,我发现正在发送一个Set Cookie
,其中包含一个designe会话
所以我的问题是:
如何在使用自定义策略时禁用
设置Cookie
?您可以阻止创建会话,如此处所述
对于一些其他的选择,请考虑。
resource = warden.authenticate!(:scope => resource_name, :store => !(request.format.xml? || request.format.json?))