2011-05-18 78 views
3

我使用Devise token_authentication服务和ActiveResource客户端。我希望自动设置:每个请求中的auth_token参数!使用Rack中间件在每个请求上添加api_key

我想这一点,但是这并不工作...

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 

任何想法?

+0

我有完全相同的问题。事实上,我曾在Rails 3.0.7和较旧版本的Rack中工作。现在,坏了。我可以在Rack应用程序中看到新合并的参数在那里,但是他们并没有为乘坐Rails而闲逛。 – 2011-09-16 18:48:23

回答

4

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

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

这将是中间件之间传递(和Rails)的该env坚持。

+0

这似乎没有在宝石发布版本中,主人和宝石发布在1.4.1,只有主人有这个?我错过了什么吗? – Inc1982 2012-12-06 21:36:23

+0

你是对的 - 这个功能不在1.4.1中。希望他们很快就会发布1.5 ...这是一个很长的**时间。 – 2012-12-06 21:45:33

+0

感谢您的快速抬头..说你的代码和参考仍然帮助我得到我的答案,所以谢谢。 – Inc1982 2012-12-06 22:03:56

相关问题