我在我的 rails 3.2 应用程序中设计了 token_auth 工作正常。我只是在构建一个 API,需要用另一个令牌覆盖设计身份验证机制。为什么?因为一个用户有很多位置,我想通过这个令牌提供对每个位置的独立访问,而不影响整个帐户。
创建位置时,会自动创建位置 api_token。
在我尝试使用新密钥访问的位置控制器中,我尝试了以下操作:
class Api::V1::LocationsController < ApplicationController
before_filter :restrict_access, :only => :index
def index
@locations = Location.all
@page_title = "Locations"
@page_title_content = "A list of all your locations. Click to customise and view reports"
respond_to do |format|
format.json { render json: @locations }
format.xml { render xml: @locations }
end
end
private
def restrict_access
api_key = Location.find_by_api_token(params[:access_token])
head :unauthorized unless api_key
end
end
然而,一切都很好,即使我没有登录并且没有在 url 中传递密钥,我也可以查看所有位置。
有什么建议我可以让这个工作吗?另外,我怎样才能限制那些可以访问的位置?通常我使用cancan,但看不到它是如何工作的。