簡體   English   中英

如何在rails-devise網站上注明特定用戶(不是current_user)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM