代码之家  ›  专栏  ›  技术社区  ›  user2340939

从控制台注销设备

  •  0
  • user2340939  · 技术社区  · 7 年前

    如何手动注销用户(或所有用户) 从Rails控制台 ? 我是 使用Desive gem .我找到的解决方案都不适合我。如何呼叫用户注销?我试过了。 Devise::Controllers::SignInOut#sign_out(User.first) .

    3 回复  |  直到 7 年前
        1
  •  2
  •   Austio    7 年前

    这在很大程度上取决于您如何处理会话,以及是否使用某种数据库持久性支持这些身份验证(会话或身份验证表通常是存在的)。如果只是通过设置cookie,您将无法直接通过控制台进行设置,因为这与通过浏览器中的warden使cookie过期有关。

        2
  •  1
  •   lacostenycoder    7 年前

    如果将用户会话存储在sessions表中(这是非常标准的),那么删除所有用户会话是很容易的。这是非常严厉的。

    sql = 'DELETE FROM sessions;' # will destroy all sessions in the database    
    ActiveRecord::Base.connection.execute(sql)
    

    如果您使用的是Desive gem,请看这里的destroy单用户会话

    Logout users with devise gem rails

        3
  •  1
  •   John Baker    7 年前

    要注销,可以使用此命令,该命令将清除所有用户会话:

    rake db:sessions:clear

    如果每个用户帐户只使用一个会话,则可以使用:

    user = User.first
    user.update_attributes(unique_session_id: "")