[英]How can I invalidate a session of a user on a rails devise app?
我想創建一個將使用戶 session 無效的端點。我知道 devise 具有destroy_user_session
路由,該路由將破壞用戶 session。但是從管理員的角度來看,我如何為特定用戶執行此操作? devise把session的數據存放在哪里?
devise把session的數據存放在哪里?
Devise 將使用您的 Rails 應用配置使用的 session 商店。 使用的密鑰由您在config/routes.rb
文件中傳遞給devise_for
的內容決定 - 這被稱為 Devise 映射。 請參見Devise::Controller::Rememberable 。
至少從 Rails 4 開始,Rails 中默認的 session 存儲是 ActionDispatch::CookieStore,所以 session 實際上是通過在客戶端和服務器之間來回傳遞加密的 cookie 來“存儲”的。 這比替代方案的性能要好得多。
因此,您實際上不能在使用 cookie 存儲時“使”或破壞其他用戶會話,因為它不是您實際控制的東西。 您可以簡單地通過更改應用程序密碼使所有用戶 cookies 無效,這將導致 Rails 拒絕任何現有的 session 存儲 cookies 並發布新的。
如果您希望能夠實現這樣的功能,您需要將 session 存儲后端更改為服務器端存儲,例如Redis或ActiveRecord ,這實際上會讓您找到特定用戶的 session 並將其刪除。 在這樣做之前,您應該盡可能多地閱讀Rails 中的會話如何工作以及 Devise 如何與Warden一起處理用戶身份驗證的基礎知識,因為您需要扎實地掌握這些知識才能實現該功能。 還應考慮性能影響,因為它會影響您的整個應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.