使用grape和rails限制访问json数据3

时间:2013-03-13 23:10:16

标签: ruby-on-rails ruby json api grape

我在这个地址有一个json数据:

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可以访问这些数据,我不想允许用户。只能从我自己的应用程序访问我的内部搜索引擎中的这些数据。

如何限制访问数据仅限于我自己的应用程序葡萄?

谢谢

1 个答案:

答案 0 :(得分:0)

我是葡萄和Rails的新手,但如果您不必使用格拉巴酒并且可以使用Rails,那么就会想到这一点。

您可以使用Rails检查“请求者”URL,如果它来自yourapplication.com,则允许访问,否则拒绝。