当前位置:  开发笔记 > 后端 > 正文

将api密钥添加到ActiveResource中的每个请求

如何解决《将api密钥添加到ActiveResource中的每个请求》经验,为你挑选了2个好方法。

我有2个RESTful Rails应用程序,我正试图互相交谈.两者都是用Rails 3编写的(目前是beta3).对服务的请求将需要使用api密钥,这只是每个请求都需要的参数.我似乎无法找到有关如何执行此操作的任何信息.

您可以通过site =方法定义资源连接到的URL.应该有一个等效的query_params =方法或类似的方法.

我找到了一篇与此相关的好博客文章,它是从2008年10月开始的,因此对Rails 3来说并不完全有用.

更新:我有一个想法.小型机架中间件或金属是否可以解决这个问题?它可以直接通过请求,将其添加到api_key上.



1> Kelvin..:

使用model#prefix_options这是一个散列,用于将params传递给查询字符串(甚至作为Model.prefix部分的子目录,例如"/ myresource /:param /"将替换为prefix_options [:param]的值.在前缀中找不到的哈希键将被添加到查询字符串中,这是我们想要的情况).

class Model < ActiveResource::Base
  class << self
    attr_accessor :api_key
  end

  def save
    prefix_options[:api_key] = self.class.api_key
    super
  end
end

Model.site = 'http://yoursite/'
Model.api_key = 'xyz123'
m = Model.new(:field_1 => 'value 1')
# hits http://yoursite:80/models.xml?api_key=xyz123
m.save


这只会修复`save`.只有@ benny-degezelle建议的解决方案才能全局处理它

2> subiet..:

我最近遇到了类似的问题,如果你在Rails3上,它支持使用自定义标题,这使得这些情况下的生活更加轻松.

在您提出请求的一边,添加

headers['app_key'] = 'Your_App_Key'

到您从ActiveResource :: Base继承的类

在您是服务器上,对于身份验证,只需将其作为

request.headers['HTTP_APP_KEY']

例如:

class Magic < ActiveResource::Base
    headers['app_key'] = 'Your_App_Key'
end

现在Magic.get,Magic.find,Magic.post都将发送app_key

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有