我正在使用Ruby-on-Rails设计一个API系统,我希望能够记录查询并验证用户身份。
但是,我没有传统的登录系统,我想使用APIkey和用户可以在请求中的HTTP标头中提交的签名。 (类似于亚马逊的服务如何运作)
我没有请求/users/12345/photos/create
,而是希望能够请求/photos/create
并提交标题X-APIKey: 12345
,然后使用签名验证请求。
有没有可以改编的宝石?或者更好的是,没有适应性的任何宝石?
或者你觉得让他们使用POST / GET变量在每个请求中发送API密钥会更明智吗?
答案 0 :(得分: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
这是我可以获得的具体内容,因为您没有说明您当前的身份验证设置。