1

我在Ruby-on-Rails中設計了一個API系統,我希望能夠記錄查詢和驗證用戶。Ruby使用標頭進行身份驗證的方法?

但是,我沒有傳統的登錄系統,我想使用API​​key和用戶可以在請求中的HTTP標頭中提交的簽名。 (類似於亞馬遜的服務工作)

而不是請求/users/12345/photos/create我希望能夠請求/photos/create並提交一個標題,說X-APIKey: 12345,然後驗證請求與簽名。

是否有任何寶石可以適應這樣做?或者更好的是,沒有適應性的任何寶石都會這樣做?

或者你覺得讓他們在每個請求中使用POST/GET變量發送API密鑰會更明智嗎?

回答

1

您可能已經使用了認證庫。它可能有一種方法來覆蓋它檢查身份驗證的方式。最有可能的是,該方法被命名爲authenticated?。儘管如此,請參閱您正在使用的庫的文檔。

我不會尋找現有的寶石,但自己實現它;這樣做不應該太難。下面是一個例子樣板實現:

class ApplicationController < ActionController::Base 
    def authenticated? 
    current_user.is_a?(User) 
    end 

    def current_user 
    user_from_session || user_from_api_key 
    end 

    def user_from_session 
    # ... use session[:user] or whatever. 
    end 

    def user_from_api_key 
    User.find_by_api_key(request.headers["X-APIKey"]) 
    end 
end 

這是具體,我可以得到的,因爲你不說你目前的身份驗證設置任何東西。

+0

我遇到了http://www.compulsivoco.com/2009/05/rails-api-authentication-using-restful-authentication/,除了8月份的代碼示例之外,它還能幫助你相處 – Alistair 2010-05-22 22:15:28