2012-06-12 70 views
6

目前,devise配置爲通過URL接受令牌認證和捲曲效果很好如何配置設計在HTTP標頭中接受身份驗證令牌?

curl 'http://localhost/index.json?auth_token=TOKENVALUE' 

現在,我想通過通過HTTP標頭,而不是URL的TOKENVALUE,我該怎麼配置設計獲得從TOKENVALUE 要麼 HTTP標頭 URL?這樣,以上的和下面的捲曲請求將工作:如this railscast所示

curl 'http://localhost/index.json' -H 'Authorization: Token token="TOKENVALUE"' 

回答

1

首先添加到您的Gemfile https://github.com/stvp/devise_header_token那麼你就可以在你的配置添加配置爲它/初始化/ devise.rb

# Configuration for :token_authenticatable 
# Defines name of the authentication token params key 
config.token_authentication_key = 'AUTH-TOKEN' 
1

設計允許通過基本驗證身份驗證令牌身份驗證。如果你看看source你會看到這一點:

頁眉,您可以使用基本身份驗證傳遞令牌作爲用戶名和 空白密碼。由於某些客戶端可能需要密碼,因此您可以將「X」作爲密碼傳遞給 ,它將被忽略。

1

事情已經改變,因爲這個問題是問,能想出不再有令牌認證功能,內置。它被提取出來一個單獨的寶石,devise-token_authenticatable。我正在使用那個寶石,並且想要和提問的人一樣。

我想通了,我必須設置這在我的config /初始化/ devise.rb:

config.http_authenticatable = true

我通過捲曲嘗試過了,它的工作。在我的RSpec測試中,我能夠將令牌放入HTTP頭中,如下所示:

user = FactoryGirl.create(:user) 
header = ActionController::HttpAuthentication::Token.encode_credentials(
    user.authentication_token) 
get "/api/v1/your_url", 
    { }, 
    { 
     'Accept' => 'application/json', 
     'Authorization' => header 
    } 

希望這可以幫助那裏的人!

相關問題