我想使用 rails-api gem special来创建仅限API的应用程序。为了提供身份验证机制,我想使用Railscasts #352中描述的内置 authenticate_or_request_with_http_token 方法,但此方法在此处缺失。
有没有人有 rails-api gem的经验?
P.S。我可以看到this approach,但这是生产就绪的吗?
答案 0 :(得分:47)
我正在使用rails-api开发服务。我们尚未部署,但即将到来,并且在测试中没有任何问题。您需要包含要使用的任何非必要模块,因为rails-api会向下修剪。我在ApplicationController中使用authenticate_or_request_with_http_token,如下所示:
include ActionController::HttpAuthentication::Token::ControllerMethods
def authenticate
authenticate_or_request_with_http_token do |token, options|
apiKey = ApiKey.where(auth_token: token).first
@current_user = apiKey.user if apiKey
end
end
如果你只想要令牌,有一个方便的方法token_and_options:
include ActionController::HttpAuthentication::Token
def current_user
api_key = ApiKey.where(auth_token: token_and_options(request)).first
User.find(api_key.user_id) if api_key
end
答案 1 :(得分:2)
来自README:
基本,摘要和令牌认证:Rails带有对三种HTTP认证的开箱即用支持。
所以,是的,这是生产就绪(毕竟它仍然是Rails)。您链接的示例是要采用的方法(诀窍是仅包含Action Pack所需的内容)。