如何从Rails控制台手动注销一个用户(或所有用户(?我正在使用Devise宝石。我找到的解决方案都不适合我。如何对用户调用sign_out?我试过例如Devise::Controllers::SignInOut#sign_out(User.first)
。
这在很大程度上取决于您如何处理会话,以及您是否使用一些数据库持久性来支持这些身份验证(会话或身份验证表通常是存在的(。如果只是通过设置cookie,您将无法直接通过控制台进行设置,因为这与通过浏览器中的管理员使cookie过期有关。
如果您将用户会话存储在会话表中(这是非常标准的(,那么删除所有用户会话就很容易了。这是非常严厉的。
sql = 'DELETE FROM sessions;' # will destroy all sessions in the database
ActiveRecord::Base.connection.execute(sql)
如果你正在使用Devise gem,对于销毁单用户会话,请查看这里的
注销用户与设计宝石轨道
要注销,可以使用此命令,它将清除所有用户会话:
rake db:sessions:clear
如果你每个用户帐户只使用一个会话,你可以使用这个:
user = User.first
user.update_attributes(unique_session_id: "")