2012-01-04 3 views
2

RoRアプリケーションを使用してUIとReSTful APIリクエストの両方を処理したいのですが、 protect_from_forgeryフラグのために問題が発生しています。私は、APIユーザーがクッキーを保存したり、authenticity_tokenを渡さなければならないことを望んでいません。 UIとAPIの両方に同じReSTfulクエリを使用できるようにしたいと考えています。例えば、RoR UI&WebService:protect_from_forgeryを回避する

https://host.domain.com/user/show/1 
https://host.domain.com/user/create 

アプリケーションコントローラは、API呼び出しが行われているかどうかを確認する必要があり、次いで protect_from_forgeryフラグを呼び出さないであろう。だから、のようなもの:

skip_before_filter :verify_authenticity_token, :only => :api 

しかし、ここで:apiはアクションであると私は新しいルートをマップする必要があります。私はこれがUIと同じコントローラとアクションを使用できるとは思わない。

私は混乱しており、この問題にどのようにアプローチするのか不明です。確かにこれは多くの人が解決しなければならない共通の問題 です。私は、人々が提供できるあらゆる助けに感謝します。

答えて

0

これはうれしい考えです。すべての操作について、フィルタをスキップしてください。次に、新しいフィルタをあなたのapi方法で

def verify_authenticity_token_or_api 
    api? || verify_authenticity_token 
end 

を追加要求がAPI要求であるかどうかを考え出します。 apiリクエストのように見えるリクエストを作成することで、人々が偽造防止を迂回できるように注意してください.APIリクエストのようなものがあれば、ユーザーのセッションを無効にするようなことをしたいかもしれません。

もう1つのアプローチは、apis専用のエンドポイントとコントローラを用意することです。あなたが欲しいと思っているリソースは、モデルに正確に対応していないことがあります。

+0

あなたの提案はすばらしく機能しました。私は本当に助けに感謝します。私はどこでも答えを見つけることができませんでした。私はこれまでに多くの人々がこの問題に遭遇し、解決策を講じなければならないと思います。再び、ありがとう! –