在删除用户时设计令牌身份验证跳过更新身份验证 header

Devise token auth skip update auth header on deleting user

我在我的 Rails 应用程序中同时使用 devise_token_auth 1.1.3 和设计 4.4.3,我正在尝试删除当前用户。我的用户名为 'staff'。问题是当我尝试删除当前用户时,它会尝试为不存在的用户更新身份验证 header。

  def destroy
    staff = Staff.find(params[:id])

    if current_staff.entity == staff.entity
      staff.destroy
      render json: { success: "Staff Member Successfully Deleted" }, status: 200
    else
      render json: { success: "Staff Member failed to delete" }, status: :unprocessable_entity
    end
  end

在该渲染 json 行中,它在 devise_token_auth 中命中此行并崩溃;

devise_token_auth (1.1.3) app/controllers/devise_token_auth/concerns/set_user_by_token.rb:105:in `update_auth_header'

更新:尝试使用注册控制器删除用户

我已经设置了当前路线覆盖

  mount_devise_token_auth_for 'Staff', at: 'auth', controllers: {
    sessions: 'sessions',
    registrations: 'registrations'
  }

并像这样重写了注册控制器;

class RegistrationsController < DeviseTokenAuth::RegistrationsController

  def destroy
    puts 'test'
    byebug
  end

end

现在在我的测试中如果我调用

    delete "/auth/#{staff.id}"

它根本没有遇到错误。

执行此操作的方法是在控制器顶部添加以下代码行:

skip_after_action :update_auth_header, only: %i[destroy]

这样做是跳过 update_auth_header 在设计中仅针对“销毁”方法定义的操作后。