フォーム認証を強制するために、ほとんどのコントローラーが Authorize 属性で装飾されている ASP.NET MVC Web サイトがあります。
Facebook アプリを介してこの Web サイトを Facebook で利用できるようにしようとしていますが、FB ユーザーには別の認証/承認を使用したいので、コントローラーで CanvasAuthorize 属性を使用したいと考えています。
問題は、コントローラー/アクションで両方を使用できないことです。これは、両方が関連するアクションにアクセスするために強制されるためですが、通常の Web サイトには Authorize のみが必要で、Web サイトにアクセスしたときに CanvasAuthorize のみが必要です。 FBから(FBアプリ経由)。
私は始めました
- 既存のコントローラーを「controllerhelpers」に大幅にリファクタリングする
- 既存のコントローラーを (authorize 属性を使用して) 作成し、controllerhelpers に関連するメソッドを使用します。
- 関連する controllerhelper メソッドも使用する FB アプリ用の新しいコントローラー (CanvasAuthorize で装飾) を作成します。
しかし、これは膨大な作業であり、これが進むべき道なのか、それとももっと簡単で洗練された作業方法があるのか はわかりません。
もちろん、同じビューを使用したいのですが、cshtmls では特定のコントローラーの Url.Action メソッドを使用しているため、cshtmls にアクションパスを挿入するときの現在のアプローチ (たとえば、jQuery ajax Url プロパティ)たとえば、通常の Web サイトを使用する場合は「PersonalController」を使用し、Web サイトを FB アプリとして使用する場合は「FBPersonalController」を使用する if ステートメントを作成する必要があります。
この場合、PersonalController は [Authorize] で装飾され、FBPersonalController は [CanvasAuthorize] で装飾されます。
だから、どんなフィードバックでも大歓迎です;)
ありがとう!