Rails 自学笔记专区—005 将路由包装在块中,解决“uncaught throw :warden devise”错误

y9info · 2022年02月16日 · 149 次阅读

问题描述:

一般而言,使用 gem devise 进行用户认证时,在控制器中,增加一句“before_action :authenticate_user!”就可以实现目的。但是当控制器中存在模块引用“include ActionController::Live”时,会抛出“uncaught throw :warden devise”错误,去掉该模块引用“include ActionController::Live”,该错误消失。

###问题解决: 经过谷歌查询,得到的解决方案是,将路由包装在块中,解决“uncaught throw :warden devise”错误,即: 之前路由:

resources :docfiles do
      collection do
        delete :destroy_files
        post :download_files
      end
      member do
        delete '/files/:file_id' => 'docfiles#destroy_file', as: :destroy_file
      end
    end

将路由包装在块中后的路由:

authenticate do
    resources :docfiles do
      collection do
        delete :destroy_files
        post :download_files
      end
      member do
        delete '/files/:file_id' => 'docfiles#destroy_file', as: :destroy_file
      end
    end
  end

通过以上方案,问题解决。 具体参见:https://github.com/heartcombo/devise/issues/2332

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号