2016-07-07 34 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,在少數情況下,如檢索國家的列表

相關問題