gpt4 book ai didi

ruby-on-rails - 如何让特定用户(不是 current_user)在 rails-devise 网站上注销?

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:59 34 4
gpt4 key购买 nike

我想知道如何让特定用户(不是当前用户)注销。

我看到了这个http://www.rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/SignInOut#sign_out-instance_method并制作了这段代码。

def kick_admin
user = User.find params[:user_id]
user.admin = false
user.save
sign_out user #want to kick him.
end

但它不会让该用户注销,而是让我(当前用户)注销。sign_out 方法的正确使用方法是什么?

我检查了这个答案(Sign out specific user with Devise in Rails),但没有帮助。

最佳答案

您可以这样做的一种方法是在用户表中创建一个新属性,将其命名为 force_sign_out

def kick_admin
user = User.find params[:user_id]
user.update_attributes(admin: false, force_sign_out: true)
end

并且在 ApplicatonController 中有一个 before action,这样如果用户尝试任何事件,他就会退出

class ApplicationController < ActionController::Base

before_action :check_if_force_sign_out

def check_if_force_sign_out
return unless current_user.force_sign_out
current_user.update_attributes(force_sign_out: false) # reset for non-admin log in
sign_out
redirect_to root_path
end

end

关于ruby-on-rails - 如何让特定用户(不是 current_user)在 rails-devise 网站上注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721269/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com