[英]How can I make specific user(not current_user) sign out on rails-devise website?
我想知道如何讓特定用戶(不是current_user)注銷。
我看到了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
但它不會讓該用戶退出,但讓我(current_user)退出。 使用sign_out方法的正確方法是什么?
我檢查了這個答案( 用Rails中的Devise注銷特定用戶 ),但沒有用。
一種方法是在User表中創建一個新屬性,稱之為force_sign_out
。
def kick_admin
user = User.find params[:user_id]
user.update_attributes(admin: false, force_sign_out: true)
end
並且在ApplicatonController中有一個before操作,這樣如果用戶嘗試任何他已注銷的活動
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.