使用设计gem rails注销用户

时间:2013-04-24 14:46:36

标签: ruby-on-rails ruby-on-rails-3 devise

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

3 个答案:

答案 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中,而不是存储在数据库中。他们的浏览器具有凭据,因此您无法直接删除它。