2011-05-18 81 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

相關問題