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