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