为Rails应用程序实现API

时间:2011-03-15 10:23:17

标签: ruby-on-rails ruby api rest

我正在为我的rails应用程序构建一个API我正在尝试为API和app逻辑重用相同的控制器。没有对用户进行身份验证的请求很好,但如果某些操作需要身份验证,则如何实现。我正在使用authlogic,编辑人员需要一些我在before_filter中检查的特定权限。如果我使用http基本身份验证实现API,我该如何区分?

2 个答案:

答案 0 :(得分:1)

我认为答案分为两部分。首先,您需要使用authlogic设置http basic auth。执行此操作的详细信息包含在此SO答案中:Rails: Basic Authentication with Authlogic

然后,您需要区分控制器中的API调用和普通浏览器调用。假设您的API是XML或JSON,您可以使用以下内容执行此操作:

class ThingsController < ApplicationController
   before_filter :authorize

   def authorize
      if params[:format] == 'json' || params[:format] == 'xml' 
         require_http_auth_user # http basic auth for API access
      else
         require_user # normal authlogic authentication 
      end
   end
end

答案 1 :(得分:0)

分离成两个独立的控制器并通过mixin包含通用功能可能是值得的。这样你就可以单独授权控制器了。