从控制台注销 Devise 用户?

Log out Devise user from console?

我在使用 Heroku。有没有办法登录到控制台并注销特定用户,以便他们必须重新登录?使用设计。

Warden 将用户 ID 和加密后的密码存储在用户 cookie 中并对其进行签名。这意味着更改他们的密码会将他们注销。

请注意,如果您复制他们的加密密码并在稍后放回原处,并且他们仍然保留着 cookie,他们会像什么都没发生一样返回。

如果你不能更改密码,恐怕你没有一些黑魔法就做不到(例如,放一段只会 运行 在他们的用户 ID 和日志上的代码他们出来了)。

假设您已经部署了一些关键修复程序并且需要注销所有用户,您可以在您的 application_controller.rb 中加入一些黑魔法,但要确保 PM 看不到它,因为他会把你烧死;)

before_action logout_users, if: :user_signed_in?

def logout_users
  expire_date = DateTime.strptime(last_deploy_time)
  sign_out current_user if current_user.current_sign_in_at < expire_date
end

我发现只要更新密码就会让用户注销。

user = User.find <x>
user.password = "<new password>"
user.save

刷新页面时,您会看到用户已注销。如果您将其设置为之前的状态,用户仍会保持注销状态。