1

我在Ruby-on-Rails中设计了一个API系统,我希望能够记录查询和验证用户。Ruby使用标头进行身份验证的方法?

但是,我没有传统的登录系统,我想使用API​​key和用户可以在请求中的HTTP标头中提交的签名。 (类似于亚马逊的服务工作)

而不是请求/users/12345/photos/create我希望能够请求/photos/create并提交一个标题,说X-APIKey: 12345,然后验证请求与签名。

是否有任何宝石可以适应这样做?或者更好的是,没有适应性的任何宝石都会这样做?

或者你觉得让他们在每个请求中使用POST/GET变量发送API密钥会更明智吗?

回答

1

您可能已经使用了认证库。它可能有一种方法来覆盖它检查身份验证的方式。最有可能的是,该方法被命名为authenticated?。尽管如此,请参阅您正在使用的库的文档。

我不会寻找现有的宝石,但自己实现它;这样做不应该太难。下面是一个例子样板实现:

class ApplicationController < ActionController::Base 
    def authenticated? 
    current_user.is_a?(User) 
    end 

    def current_user 
    user_from_session || user_from_api_key 
    end 

    def user_from_session 
    # ... use session[:user] or whatever. 
    end 

    def user_from_api_key 
    User.find_by_api_key(request.headers["X-APIKey"]) 
    end 
end 

这是具体,我可以得到的,因为你不说你目前的身份验证设置任何东西。

+0

我遇到了http://www.compulsivoco.com/2009/05/rails-api-authentication-using-restful-authentication/,除了8月份的代码示例之外,它还能帮助你相处 – Alistair 2010-05-22 22:15:28