2016-07-07 27 views
0

我有一个使用Spree gem开发的Rails应用程序。出于安全原因,我想禁用所有的API功能 - 进行REST调用的能力,方法,路线。我意识到,大多数API功能不能在没有API令牌的情况下被调用。如何从现有的应用程序禁用Spree API功能

什么是'关闭'API功能的最佳方式?
最佳方式==侵入性最小的现有代码库

+0

我还没有找到一种方法来国(GET /api/v1/states)使用现有设置在Spree中执行此操作。我不想为此运行Spree的分支,但这是我最终必须做的:https://github.com/WebGents/spree/commit/e595b9485f00ec1c89fb6052687f8f6cb2d1b912 – mroach

+0

感谢@ mroach这似乎很干净。最后,给我安全问题的两个API是州和国家,因为它们不需要API令牌。我最终为它们添加了API令牌认证,并且似乎在不会对Spree API用例产生负面影响的情况下运行。 –

回答

1

我想出迄今已是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,在少数情况下,如检索国家的列表

相关问题