制定自定义策略:仍然设置会话 Cookie
Devise Custom Strategies: Still Setting Session Cookies
我正在使用 Devise 在 Rails 应用程序上对我的 Ruby 用户进行身份验证。到目前为止,我一直在使用标准的基于 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
,带有 Devise 会话。
所以这是我的问题:
如何在使用自定义策略时禁用 Set-Cookie
?
您可以阻止创建会话,如此处所述。
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。
我正在使用 Devise 在 Rails 应用程序上对我的 Ruby 用户进行身份验证。到目前为止,我一直在使用标准的基于 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
,带有 Devise 会话。
所以这是我的问题:
如何在使用自定义策略时禁用 Set-Cookie
?
您可以阻止创建会话,如此处所述。
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。