Ruby 使用标头进行身份验证的方法?
Posted
技术标签:
【中文标题】Ruby 使用标头进行身份验证的方法?【英文标题】:Ruby ways to authenticate using headers? 【发布时间】:2011-02-22 19:31:06 【问题描述】:我正在用 Ruby-on-Rails 设计一个 API 系统,我希望能够记录查询和验证用户。
但是,我没有传统的登录系统,我想使用用户可以在请求的 HTTP 标头中提交的 APIkey 和签名。 (类似于亚马逊的服务工作方式)
我希望能够请求 /photos/create
并提交一个标有 X-APIKey: 12345
的标头,然后使用签名验证请求,而不是请求 /users/12345/photos/create
。
是否有任何宝石可以适应这种情况?或者更好的是,任何无需适应即可做到这一点的宝石?
或者您认为让他们使用 POST/GET 变量在每个请求中发送 API 密钥会更明智?
【问题讨论】:
【参考方案1】:您可能已经使用了身份验证库。它可能有一种方法可以覆盖它检查身份验证的方式。最有可能的是,该方法被命名为authenticated?
。不过,请参阅您正在使用的库的文档。
我不会寻找现有的 gem,而是自己实现了它;这样做应该不会太难。这是一个示例样板实现:
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
这是我能得到的最具体的信息,因为您没有说明您当前的身份验证设置。
【讨论】:
我遇到了compulsivoco.com/2009/05/…,除了 August 的代码示例之外,它还可以帮助您相处以上是关于Ruby 使用标头进行身份验证的方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Paypal 的 Adaptive Payments API 和 Ruby 来避免身份验证和时间问题?
有没有办法将 Authorize 属性与没有身份验证标头的请求一起使用?