【问题标题】:Add api_key on every request with Rack middleware使用 Rack 中间件在每个请求上添加 api_key
【发布时间】:2011-08-28 03:36:43
【问题描述】:

我使用 Devise token_authentication 服务和 ActiveResource 客户端。我希望在每个请求中自动设置 :auth_token 参数!

我试过了,但是这不起作用...

class AuthApp

    def initialize(app)
        @app = app
    end

    def call(env)
        status, headers, response = @app.call(env)

        request = Rack::Request.new(env)
        request.params[:auth_token] = 'jCxKPj8wJJdOnQJB8ERy'

        [status, headers, response]
    end

end

有什么想法吗?

【问题讨论】:

  • 我遇到了完全相同的问题。事实上,我让它在 Rails 3.0.7 和旧版本的 Rack 中工作。现在,坏了。我可以在 Rack 应用程序中看到新合并的参数在那里,但它们并没有在 Rails 中闲逛。

标签: ruby devise rack middleware activeresource


【解决方案1】:

如果您有包含this pull request 的最新机架副本,您可以使用Rack::Request#update_param

request = Rack::Request.new(env)
request.update_param :auth_token, 'jCxKPj8wJJdOnQJB8ERy'

这将持续存在于中间件(和 Rails)之间传递的 env

【讨论】:

  • gem发布版好像没有这个,master和gem发布都是1.4.1只有master有这个?我错过了什么吗?
  • 你是对的——这个功能不在 1.4.1 中。希望他们能尽快发布 1.5...已经很长时间了。
  • 感谢您的快速提醒。您的代码和参考仍然帮助我得到了答案,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-06
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 2012-09-16
  • 1970-01-01
相关资源
最近更新 更多