2013-03-12 172 views
0

devise plugin允許使用authentication tokens。該文檔說明了「Token Authenticatable」選項:基於身份驗證令牌(也稱爲「單一訪問令牌」)登錄用戶。令牌可以通過查詢字符串或HTTP基本認證兩種方式給出。使用基本身份驗證來傳遞身份驗證令牌

查詢字符串方法很清楚,但您是如何通過Basic Authentication傳遞令牌的?是否有必要使用Base64編碼,就像這樣:

echo "auth_token:3a75Dvc" | base64 
=> YXV0aF90b2tlbjozYTc1RHZjCg== 
curl --header "Authorization: Basic YXV0aF90b2tlbjozYTc1RHZjCg==" \ 
    http://my_site.com/my_app 

回答

2

下面是從設計規格與身份驗證令牌基本身份驗證的一個例子:

header = "BasiC#{Base64.encode64("#{VALID_AUTHENTICATION_TOKEN}:X")}" 
get users_path(:format => :xml), {}, "HTTP_AUTHORIZATION" => header 
+0

是的,你是對的。查看規格總是一個好主意。爲什麼你必須添加一個「X」?我從來沒有猜到過。我期望'auth_token:token_value'格式,但不是'token_value:X' – 0x4a6f4672 2013-03-12 13:21:12

+0

其實我認爲它可以是任何東西,而不是X.所以''Basic#{Base64.encode64(「#{VALID_AUTHENTICATION_TOKEN}:BLAHBLAHBLAH」)} 「'我應該工作。 – 2013-03-12 13:39:38

+0

是的,TokenAutheticable策略的源代碼表示:「由於某些客戶端可能需要密碼,因此您可以將」X「作爲密碼傳遞,它將被忽略。」,請參閱https://github.com/plataformatec/devise /blob/master/lib/devise/strategies/token_authenticatable.rb – 0x4a6f4672 2013-03-12 13:44:05