2

Rails 3.1 アプリでrescue_fromは、ベース API コントローラーの上に次のようなものがあります。

rescue_from Exceptions::InvalidApiKey, :with => :invalid_api_key

invalid_api_key では次のようになります。

def invalid_api_key
    Rails.logger.debug "Invalid API key"
    render :json => {:error => :invalid_api_key}, :status => :forbidden
end

before_filterAPI キーをチェックし、必要に応じて InvalidApiKey 例外をスローする があります。

ただし、AbstractController::DoubleRenderError例外ハンドラーと元のアクションでレンダリングしようとするため、間違った API キーでコントローラーを試すとエラーが発生します。

どうすればこれを回避できますか?

4

1 に答える 1

0

return falseコントローラーのチェーンをbefore_filter停止する必要があります。

それ以外の場合は、最初にエラーをレンダリングし、invalid_api_key「通常の」フローを使用して呼び出されたアクションに移動し (例外からレスキューしたため)、アクションから再度レンダリングを試みます。

そう

def invalid_api_key
    Rails.logger.debug "Invalid API key"
    render :json => {:error => :invalid_api_key}, :status => :forbidden 
    false
end

問題を解決する必要があります

于 2012-08-15T14:35:57.050 に答える