【问题标题】:Devise support for multiple concurrent sessions设计对多个并发会话的支持
【发布时间】:2014-03-05 21:40:28
【问题描述】:

我将 Rails 3.2.11 与 Devise 2.2.3 一起用于订阅服务应用程序。我从另一个不再可用的开发人员那里继承了该应用程序。我是 Rails 和 Devise 的新手。

我想允许单个用户(电子邮件)对同一个应用程序进行多个会话,同时运行。这些会话可能都具有相同的 IP 地址或不同的 IP 地址,但可能是不同的设备——台式机、笔记本电脑、台式机、智能手机。

我想独立处理每个会话,以便用户可以登录和关闭一个会话,而不会影响另一个会话正在进行的任何工作。

问题:设计是否正常支持多个并发会话?我必须自定义任何代码或配置吗?

当我查看用户模型时,我看到“current_sign_in_at”、“current_sign_in_ip”和“authentication_token”的单个属性——这让我认为单个用户一次只能有一个会话。

我查看了this discussionthe devise wiki,但没有找到答案。

【问题讨论】:

    标签: ruby-on-rails-3 session devise


    【解决方案1】:

    是的,默认情况下,devise 允许同一用户有多个并发会话。然后,如果你想限制这种行为,你需要使用一些扩展,比如:devise_security_extension

    我将 Rails 3.2.17 与 Devise 3.2.2 一起使用

    【讨论】:

    • 谢谢。有没有办法将用户的会话(从 Rails 应用程序内部或外部)识别为管理功能?也就是说,我该如何回答以下问题:谁登录了?以及用户有多少会话?
    • 好吧...如果您需要知道当前用户已通过身份验证,您可以考虑用户列,例如:“current_singing_ip”,但不存在可用信息来确定用户有多少会话。因为默认情况下,Rails 使用 CookieStore 来处理会话。这意味着识别用户会话所需的所有信息都发送到客户端,并且没有任何内容存储在服务器上。看:pothibo.com/2013/09/sessions-and-cookies-in-ruby-on-rails
    • 您可以更改会话存储以控制 session_id(查看:pothibo.com/2013/09/sessions-and-cookies-in-ruby-on-rails)。然后您就知道每个用户有多少会话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    相关资源
    最近更新 更多