从控制台注销Devise



如何从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: "")

最新更新