Rails3.2アプリケーションでtoken_authが正常に機能するように考案しました。APIを構築しているだけで、デバイス認証メカニズムを別のトークンでオーバーライドする必要があります。なんで?1人のユーザーが多くの場所を持っているため、アカウント全体を危険にさらすことなく、このトークンを介して各場所への独立したアクセスを提供したいと考えています。
ロケーションが作成されると、ロケーション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にキーを渡さなくても、すべての場所を表示することが許可されています。
これを機能させる方法について何か提案はありますか?また、アクセスできる場所に表示される場所を制限するにはどうすればよいですか?通常、私はカンカンを使用しますが、これがどのように機能するかわかりません。