簡體   English   中英

如何使 devise 應用程序上的用戶的 session 無效?

[英]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 存儲后端更改為服務器端存儲,例如RedisActiveRecord ,這實際上會讓您找到特定用戶的 session 並將其刪除。 在這樣做之前,您應該盡可能多地閱讀Rails 中的會話如何工作以及 Devise 如何與Warden一起處理用戶身份驗證的基礎知識,因為您需要扎實地掌握這些知識才能實現該功能。 還應考慮性能影響,因為它會影響您的整個應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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