我刚刚开始在rails应用程序上添加REST API,因为我只想暴露一些控制器/动作,所以我向ApplicationController添加了一个方法:
def http_basic_authentication
if request.format == Mime::XML
authenticate_or_request_with_http_basic do |username, api_key|
self.current_user = User.find(:first, :from => 'users, accounts', :conditions => ["accounts.id = users.account_id AND accounts.api_key = ?", api_key])
end
end
end
然后我可以在我想要公开的单个控制器/操作上使用before_filter。有没有人有任何反馈,代码审查或更好的方法?
答案 0 :(得分:1)
这可能会更清洁:
self.current_user = Account.find_by_api_key(api_key).user
答案 1 :(得分:0)
您可能会发现此处详述的方法很有用http://www.compulsivoco.com/2009/05/rails-api-authentication-using-restful-authentication/
这与常见的restful_authentication插件集成。