2009-10-29 112 views
1

我請求有很多不同的接口的內部API,是每個REST:紅寶石和HTTParty

/用戶/

/用戶/用戶名 /聯繫人/

/用戶/ __ username_ /屬性/

.....

所有這些接口都通過調用

/登錄

一個共同的身份驗證,並返回需要在每個人使用電話

所以我做了一個類的AUTH_KEY每個接口,如:

class MyApi::Users 
    include HTTParty 

    def initialize(username, password) 
    init = MyApi::Auth.new(username, password) 
    @auth_token = init.auth["id"] 
    end 

    def create(options) 
    end 

    def show(username) 
    end  

    def update(username, options) 
    end 

    def destroy(username) 
    end 

end 

所以編碼所有類後,我的問題是,如果我需要調用2 diffe租金接口一前一後,如:

def test 
    user = MyApi::Users.new("user", "password") 
    user = user.show("toto") 
    contacts = MyApi::Contacts.new("user", "password") 
    contacts = contacts.list(user.id) 
end 

正如你看到的,我需要兩次驗證和我的情況各有不同的令牌,你有一個想法,我怎麼能提高,如果沒有登錄兩次。 謝謝,

回答

1

嗨邁克你爲什麼每次打電話都要進行身份驗證?不知道你的應用程序,它會顯示你應該使用會話,並且只是第一次驗證它的需要

應該不需要繞過登錄/授權控制器之外的控制器中的用戶名和密碼

喜歡的東西AUTH邏輯將有before_action確保你的用戶進行身份驗證並讓您獲得CURRENT_USER

+0

我不使用軌道幽冥會話或身份驗證邏輯, 它是我的問題,我不想驗證兩次, 我需要一種模式才能做到這一點。 – Mike 2009-10-29 21:29:54

+0

對不起我的假設 – ADAM 2009-10-29 22:03:27

+0

如果你不使用rails,Mike能否澄清你用來爲restful資源提供服務?你使用自己的框架,sinatra等,其中一些有保持國家的方式和其中一些不。顯然,答案在於保持服務器端的狀態並在客戶端重用它 – ADAM 2009-10-29 22:15:53