我使用Devise(2.1.2)和Rails(3.2.9),我已經啓用基本身份驗證(測試)。我使用CURL發佈JSON POST請求,並且看到奇怪的行爲。第一次發送請求時(服務器重新啓動後),但在第二次發送完全相同的請求後成功,認證失敗。設計認證失敗的第一次嘗試,成功後
調試時,似乎勝利策略在第一次嘗試時爲零,但在第二次嘗試時填充了三種策略。
這種行爲的原因是什麼?
我使用Devise(2.1.2)和Rails(3.2.9),我已經啓用基本身份驗證(測試)。我使用CURL發佈JSON POST請求,並且看到奇怪的行爲。第一次發送請求時(服務器重新啓動後),但在第二次發送完全相同的請求後成功,認證失敗。設計認證失敗的第一次嘗試,成功後
調試時,似乎勝利策略在第一次嘗試時爲零,但在第二次嘗試時填充了三種策略。
這種行爲的原因是什麼?
嘗試:
身份驗證:
curl -H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-X POST http://localhost:3000/users/sign_in \
-d "{'user' : { 'email' : '[email protected]', 'password' : 'password'}}" \
-c cookie
顯示:
curl -H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-X GET http://localhost:3000/pages/1.xml \
-b cookie
對於post
請求 -
你需要一個CSRF令牌用於Rails 3中的非GET請求。
這是因爲Rails的默認添加一個真實性令牌從提交參數的惡意僞造的保護形式。由於您沒有提供您的請求這個令牌,鐵軌不接受它。你可以繞過這個
skip_before_filter :verify_authenticity_token
是的,我在日誌中看到有關CSRF令牌的消息,但它只是一個警告,似乎沒有任何效果。正如我所說的,完全相同的POST請求第一次失敗並且第二次(以及之後的每次)都工作。爲什麼? –
因此,這是可能爲您取得首次認證的嚴重警告。第二次,它會以某種方式獲得上一個令牌,然後您會得到認證。似乎再次出現'authenticity_token'問題。嘗試繞過。 –
「第二次,它以某種方式得到了前一個標記......」 - 如何?我也第二次得到警告。 –
在用戶認證中做了什麼'winning_strategies'? –
我只是想調試它,'wins_strategies'是Warden某個地方的列表,我對Devise/Warden內部構件不熟悉,所以這只是一些提供更多知識的暗示。 –
它是否僅適用於使用CURL的JSON POST請求?你能通過瀏覽器登錄嗎? –