2013-03-13 48 views
1

我在這個地址的JSON數據:restric訪問JSON數據和軌道3

http://localhost:3000/api/v1/apisearch 

這些JSON數據與葡萄寶石https://github.com/intridea/grape產生:

class API_v1 < Grape::API 
    version 'v1', :using => :path, :vendor => 'myapp', :format => :json 
    get :apisearch do 
     Object.search({query: "*#{params[:q]}*"}).map{ |object| {id: object.title, text: object.description } } 
    end 
end 

我有一個搜索引擎即從該地址獲取數據與select2

這是我的coffescript文件:

jQuery -> 
    $('#query_txt').select2 
    width: 'resolve' 
    allowClear: true 
    minimumInputLength: 2 
    ajax: 
     url: "api/v1/apisearch" 
     dataType: 'json' 
     data: (term, page) -> {q: term} 
     results: (data, page) -> 
     results: data 

該腳本工作得很好,但我想保護這個外部請求的地址。

如果類型http://localhost:3000/api/v1/apisearch可以訪問這些數據,我不想讓用戶。只能從我自己的應用程序中訪問我的內部搜索引擎中的這些數據。

如何限制訪問數據僅限於我自己的葡萄申請?

謝謝

回答

0

我是新來的葡萄和Rails但這裏是來考慮,如果你沒有使用格拉巴酒,並且可以使用Rails的東西。

您可以使用Rails檢查「請求者」URL,如果它源自yourapplication.com,則允許訪問,否則拒絕訪問。

+0

謝謝,你能否在你的回覆中粘貼一個例子?我在https://groups.google.com/forum/#!topic/ruby-grape/ZvXBQD4bFms和Daniel Doubrovkine上提出了同樣的問題,葡萄的創造者說我不可能。如果您可以粘貼代碼解決方案將會有所幫助。謝謝 – hyperrjas 2013-03-17 03:16:18

+0

我在那裏添加了它。將有興趣瞭解你如何決定解決你的問題。 – Yuri 2013-03-26 04:47:58

+0

謝謝尤里,我已經嘗試過https://github.com/udzura/rack-block,但它不可能從本地主機。我不知道是否需要真正的域名。如果你知道一個真實例子的修復,對其他用戶會非常有用。非常感謝你! – hyperrjas 2013-03-26 09:21:48