我想創建一個將使用戶會話無效的端點。我知道設計的destroy_user_session路線會破壞用戶會話。但是從管理員的角度來看,我怎樣才能為特定用戶做到這一點呢?設計在哪里存盤會話資料?
uj5u.com熱心網友回復:
設計在哪里存盤會話資料?
Devise 將使用您的 Rails 應用程式配置使用的會話存盤。使用的密鑰取決于您在檔案中傳遞devise_for的config/routes.rb內容 - 這稱為設計映射。請參閱設計::控制器::可記憶。
Rails 中的默認會話存盤至少從 Rails 4 開始就是 ActionDispatch::CookieStore ,因此會話實際上是通過在客戶端和服務器之間來回傳遞加密的 cookie 來“存盤”的。這比替代方案的性能要高得多。
因此,在使用 cookie 存盤時,您實際上不能“使”或破壞其他用戶會話,因為它不是您實際控制的東西。您可以通過更改應用程式機密來簡單地使所有用戶 cookie 無效,這將導致 Rails 拒絕任何現有的會話存盤 cookie 并發出新的。
如果您希望能夠實作這樣的功能,您需要將會話存盤后端更改為服務器端存盤,例如Redis或ActiveRecord,這實際上可以讓您找到特定用戶的會話并將其洗掉。在這樣做之前,您應該盡可能多地閱讀有關會話在 Rails 中的作業原理以及 Devise 與Warden如何處理用戶身份驗證的基礎知識,因為您需要牢牢掌握這一點才能實作該功能。還應考慮性能影響,因為它會影響您的整個應用程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460242.html
