在管理部分,我显示了当前登录用户的列表。现在管理员可以选择一个或多个用户/用户并销毁他们的会话(注销他们)。我不知道从哪里开始,请帮助我。
问问题
1846 次
3 回答
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
于 2013-04-24T14:56:30.263 回答
1
考虑用户是您所需用户的集合,
for user in users
sign_out user
end
它应该可以解决您的问题。
希望能帮助到你 :)
于 2013-04-24T14:57:07.733 回答
0
Devise提供的sign_out
方法无济于事。我知道文档说它会注销您请求的“资源”,但是如果您自己深入研究宝石(设计和管理员),您会发现当您给它一个对象时,就像用户一样,它只会弄清楚什么对象所属的范围(即:user),并注销整个范围。
Devise 中的范围是登录的命名空间。您可能有一个需要登录的 Customer 模型,还有一个也需要登录的 Vendor 模型,并且您会为这些模型使用不同的范围。大多数应用程序只使用一个单一的范围,绑定到用户模型。
您可能正在使用:cookie_store
您的会话存储,这是 Rails 的默认设置。在这种情况下,除了您自己之外,不可能注销任何单个用户。Devise 将您的登录信息存储在会话中,该会话存储在 cookie 中,而不是在您的数据库中。他们的浏览器具有凭据,因此您无法直接将其删除。
于 2016-01-06T22:12:12.833 回答