我在Heroku上。有没有办法登录控制台并注销特定用户,以便他们必须再次登录?使用Devise。
答案 0 :(得分:3)
Warden将用户ID和加密密码存储在用户cookie中并对其进行签名。这意味着更改密码会将其签名。
请注意,如果你复制他们的加密密码并稍后将其归还,并且他们仍然拥有cookie,那么他们将会重新进入,因为没有发生任何事情。
如果您无法更改密码,我担心如果没有一些黑魔法你就无法做到这一点(例如,放一段只会在用户ID上运行的代码并将其注销)。
答案 1 :(得分:1)
我发现只更新密码会让用户退出。
user = User.find <x>
user.password = "<new password>"
user.save
刷新页面时,您会看到用户已注销。如果你将它设置为之前的状态,用户仍然会被注销。
答案 2 :(得分:0)
假设你已经部署了一些关键修复并且需要注销所有用户,你可以在你的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