从控制台退出设计

Posted

技术标签:

【中文标题】从控制台退出设计【英文标题】:Sign out of Devise from console 【发布时间】:2019-04-24 17:28:15 【问题描述】:

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

【问题讨论】:

您是如何从控制台登录用户的? 我想这会帮助你回答,devise logout functionality 【参考方案1】:

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

【讨论】:

【参考方案2】:

如果您将用户会话存储在非常标准的会话表中,则删除所有用户会话很容易。这是非常沉重的。

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

如果您使用的是 Devise gem,请查看此处以销毁单个用户会话

Logout users with devise gem rails

【讨论】:

【参考方案3】:

您可以使用此命令退出,这将清除所有用户会话:

rake db:sessions:clear

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

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

【讨论】:

以上是关于从控制台退出设计的主要内容,如果未能解决你的问题,请参考以下文章

在控制台窗口中输出颜色方阵

.NET 控制台应用程序退出事件

如何退出导航控制器?

控制台图书管理系统

如何在 Google Play 控制台中为应用程序签名退出 .aab 文件

满足条件后 RealtimeAnalyzer 退出