[英]How to prevent Rails from sending cookie _appname_session to mobile clients (disable cookies)?
我使用Rails 4.0.2和Devise 3.3.0。 该应用程序可用于Web客户端和移动客户端。 Web应用程序使用会话,并且使用auth_token对移动应用程序进行身份验证,该auth_token与每个请求一起以参数形式发送。
目前,我找不到阻止Rails设置Cookie并将其发送到移动客户端的方法-响应始终包含
Set-Cookie = request_method=GET; path=/, _myapp_session=<token...>; path=/; HttpOnly
对于使用过滤器或任何自定义机架中间件在Rails控制器中应该做什么的任何提示,我将不胜感激。 另外,我猜可以使用某些自定义设备策略或类似方法来解决。
让我知道是否需要提供其他信息。
谢谢。
这个解决方案: Rails 3禁用会话cookie对我有用。
我最终设置了一个中间件:
module MyApp
class MobileClientsCookieFilter
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
request = Rack::Request.new env
if request.params['device'].present? or any other mobile clients checks ok?
headers.delete 'Set-Cookie'
end
[status, headers, body]
end
end
end
并在application.rb中
config.middleware.insert_before ::ActionDispatch::Cookies, MyApp::MobileClientsCookieFilter
看起来类似的解决方案也是可行的:将ActionDispatch :: Cookies子类化,如果Web客户端进行超级调用,而对移动客户端则不执行任何操作。 然后,将此自定义中间件与原始ActionDispatch :: Cookies交换。 以这种方式实施后,根本不会为移动客户端创建/生成任何cookie。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.