在管理部分,我显示了当前登录用户的列表。 现在,管理员可以选择一个或多个用户/用户并销毁他们的会话(注销)。 我无法确定从哪里开始,请帮助我。
答案 0 :(得分:5)
您可以通过传入用户对象在控制器操作中使用sign_out
方法:
# Make sure only admins can do this
def sign_out_user
@user = User.find(params[:id])
sign_out @user
end
更多信息:
http://rubydoc.info/github/plataformatec/devise/master/Devise/TestHelpers%3asign_out
答案 1 :(得分:1)
考虑用户是所需用户的集合,
for user in users
sign_out user
end
它应该可以解决您的问题。
希望有所帮助:)
答案 2 :(得分:0)
Devise提供的sign_out
方法无济于事。我知道文档说它会注销你要求的“资源”,但是如果你自己深入研究宝石(设计和监督),你会发现当你给它一个对象时,就像用户一样,它只是指出了什么对象所属的范围(即:用户),并注销整个范围。
Devise中的范围是登录的命名空间。您可能拥有需要登录的客户模型,还有需要登录的供应商模型,并且您将使用不同的范围。大多数应用程序仅使用与用户模型相关联的单个范围。
您可能正在使用:cookie_store
进行会话存储,这是Rails的默认设置。在这种情况下,除了您自己之外,无法注销任何单个用户。设计会将您的登录信息存储在会话中,该会话存储在cookie中,而不是存储在数据库中。他们的浏览器具有凭据,因此您无法直接删除它。