簡體   English   中英

如何防止Rails向移動客戶端發送cookie _appname_session(禁用cookie)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM