0
在我的測試應用程序中,我可以看到在點擊/ sign_in路徑時設置了Cookie,但尚未登錄。它在登錄/登錄時發生更改,所以auth按預期工作。但我希望通過Nginx和cookie存在混亂來匹配請求。rails,devise在登錄之前設置cookie
如何在一條特定路線上禁用cookie?
在我的測試應用程序中,我可以看到在點擊/ sign_in路徑時設置了Cookie,但尚未登錄。它在登錄/登錄時發生更改,所以auth按預期工作。但我希望通過Nginx和cookie存在混亂來匹配請求。rails,devise在登錄之前設置cookie
如何在一條特定路線上禁用cookie?
該cookie實際上是由Rack會話中間件創建的,而不是由Devise創建的。在Rails中,cookie只包含一個會話標識符,以便每個訪問者都有一個唯一的會話。
當您登錄時,設計(或成爲確切的守望者)會重置會話 - 因此將帶有新會話標識符的新cookie發送到客戶端。
「如何在一條特定路線上禁用cookie?」
由於Rails和Rack的構建方式,這有點困難。機架中間件在服務器啓動時掛載 - 不是基於每個請求。所以當請求觸及rails路由器(這是一個Rack應用程序)時,它已經通過了大部分中間件。
有像創建中間件的定製件,消除在發送之前餅乾黑客:
class CookieFilter
def initialize(app)
@app = app
end
def call(env)
Rack::Utils.delete_cookie_header!(headers, '_app-name_session')
[status, headers, body]
end
end
Rails.application.config.middleware.insert_before ::ActionDispatch::Cookies, ::CookieFilter
但是你milage可能會有所不同,因爲這會破壞依賴於會話cookie如閃爍導軌部件。
這很有趣。那麼人們如何使用Rails作爲上游來實現靜態着陸頁? – kaboom
我不太確定,您可以嘗試就該確切主題提出另一個問題。我會問自己,如果它不是過早的優化,但通常有更簡單的步驟(視圖片段緩存,SQL優化等),可以產生很大的收益。 – max