首页 文章

如何通过Active Storage禁用自动生成的路由

提问于
浏览
2

我正在将现有应用程序升级到Rails 5.2 .

旧应用程序正在使用Paperclip进行文件存储,我正在尝试将其移至ActiveStorage .

我的应用程序公开了一个API,允许用户安全上传文件(使用密钥/密钥对签名请求) .

当我安装ActiveStorage时,我发现了几条新路线

rails_service_blob GET  /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
rails_blob_representation GET  /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
       rails_disk_service GET  /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
update_rails_disk_service PUT  /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
     rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format)                                           active_storage/direct_uploads#create

如何禁用这些路由以禁止随机上传到我的应用程序 .

1 回答

  • 3

    要保护删除所有没有副作用的ActiveStorage路由,请将其添加到config / application.rb:

    class Application < Rails::Application
       ...
       initializer(:remove_activestorage_routes, after: :add_routing_paths) {|app|
          app.routes_reloader.paths.delete_if {|path| path =~ /activestorage/}}
       ...
    end
    

    我建议不要将config / application.rb中的 require 'rails/all' 替换为从rails源代码中获取的rails gems列表,这通常是推荐的 .

相关问题