2

在管理部分,我显示了当前登录用户的列表。现在管理员可以选择一个或多个用户/用户并销毁他们的会话(注销他们)。我不知道从哪里开始,请帮助我。

4

3 回答 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 回答