我正在为我的rails应用程序构建一个API我正在尝试为API和app逻辑重用相同的控制器。没有对用户进行身份验证的请求很好,但如果某些操作需要身份验证,则如何实现。我正在使用authlogic,编辑人员需要一些我在before_filter中检查的特定权限。如果我使用http基本身份验证实现API,我该如何区分?
答案 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包含通用功能可能是值得的。这样你就可以单独授权控制器了。