0
我有一个使用Spree gem开发的Rails应用程序。出于安全原因,我想禁用所有的API功能 - 进行REST调用的能力,方法,路线。我意识到,大多数API功能不能在没有API令牌的情况下被调用。如何从现有的应用程序禁用Spree API功能
什么是'关闭'API功能的最佳方式?
最佳方式==侵入性最小的现有代码库
我有一个使用Spree gem开发的Rails应用程序。出于安全原因,我想禁用所有的API功能 - 进行REST调用的能力,方法,路线。我意识到,大多数API功能不能在没有API令牌的情况下被调用。如何从现有的应用程序禁用Spree API功能
什么是'关闭'API功能的最佳方式?
最佳方式==侵入性最小的现有代码库
我想出迄今已是Application
类中添加这对我的宿主应用程序的application.rb
最好的:
initializer "delete_spree_api_routes", after: "add_routing_paths" do |app|
app.routes_reloader.paths.delete_if { |path| path =~ /\/spree(-[^\/]+)?\/api\/config\/routes.rb/ }
end
这样做是什么如果它们是从Spree API提供的routes.rb
加载的,则立即删除路由中的所有路径。这有点丑陋,但它能完成这项工作。
编辑:我建议你小心以此为施普雷使用自己的API,在少数情况下,如检索国家的列表
我还没有找到一种方法来国(
GET /api/v1/states
)使用现有设置在Spree中执行此操作。我不想为此运行Spree的分支,但这是我最终必须做的:https://github.com/WebGents/spree/commit/e595b9485f00ec1c89fb6052687f8f6cb2d1b912 – mroach感谢@ mroach这似乎很干净。最后,给我安全问题的两个API是州和国家,因为它们不需要API令牌。我最终为它们添加了API令牌认证,并且似乎在不会对Spree API用例产生负面影响的情况下运行。 –