2009-10-29 115 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