2010-02-19 48 views
5

我正在嘗試使用Rest-client gem爲我的應用使用Authlogic來驗證用戶的一些小任務。從靜止客戶端的API,我看到了一個可以發佈必要的數據像這樣的登錄過程:Rest-client用authlogic登錄

require 'rest_client' 
RestClient.post "http://127.0.0.1:3000/user_sessions", {:user_session => {:username => 'myusername', :password => 'mypassword'}}.to_json, :content_type => :json, :accept => :json 

看着我的開發日誌中,我看到的應用程序中我已經登錄並正確重定向我用戶的私人頁面。然而,當我再試圖「刷新」的私人頁面,

RestClient.get 'http://127.0.0.1:3000/users/1' 

我帶回登錄頁面再次,我好像沒有登錄,所以我在想,如果這有做所謂的會話或餅乾?

我已經使用cURL成功地重現了這種情況,我使用開關'-c cookie.txt'來保存關於我已經登錄的信息,併爲每個調用使用開關'-b cookie.txt'告訴遠程服務器我的身份驗證。在主題公園或者他們知道你付錢的酒吧裏,我可以理解你的手腕上的郵票這個概念。但是我發現在RestClient中沒有提到這種機制。任何幫助都很好解決這個問題。我也不介意嘗試其他的http客戶端。

問候

回答

7

如果使用Authlogic,你可以使用單次使用的令牌,而不是用戶名/密碼。單用途令牌專門用於API調用,就像您在這裏所做的一樣。

參見:The rdocs here

+0

謝謝喬希!我現在會研究它。現在,我對API中的單個單詞感到擔憂,是否意味着我不能再次使用它來登錄?或者每次使用它時都會改變它? – 2010-02-19 23:05:43

+1

@Nik它只是意味着你必須在每個請求中提供它。因此,不是模擬登錄並嘗試傳遞cookie,而只是包含令牌。它不會自動更改。把它看作是一個API密鑰。 – 2010-02-23 13:50:39

+0

這聽起來很棒,正是我真正想要的。我將Ryan Bates的railscast作爲教程使用Authlogic,但不包括SingleAccesstoken。我的User.rb看起來像這樣 create_table「users」,:force => true do | t | t.string 「用戶名」 t.string 「電子郵件」 t.string 「crypted_pa​​ssword」 t.string 「password_salt」 t.string 「persistence_token」 t.datetime 「created_at」 t.datetime 「的updated_at」 t.integer「person_id」 t.string「perishable_token」,:default =>「」,:null => false 結束 如何獲得單一訪問令牌功能?只是遷移? – 2010-02-23 18:52:34

相關問題