使用Rack中间件在每个请求上添加api_key

时间:2011-05-18 14:50:12

标签: ruby devise rack middleware activeresource

我使用Devise token_authentication服务和ActiveResource客户端。我希望自动设置:auth_token params in every requests!

我尝试了这个,但这不起作用......

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

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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

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

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