3

[ValidateAntiForgeryToken]Marionette & Backbone を使用して作成されたシングル ページ アプリケーション (SPA) でMicrosoft の MVC を動作させるのに問題があります。問題は、MVC[ValidateAntiForgeryToken]メソッドが、JSON の一部として送信するトークンを認識できないことにあるようです。トークンが返信のフォーム部分にある必要があるためだと考えましたが、MrOggy85 はそれは問題ではないと言っています (以下の彼の回答を参照)。

コードはAttributeRoutingを使用する私の API コントローラーにあり、これが問題の原因であると想定しています。典型的なアクションは次のようになります。

    // POST api/vizschemes/
    [POST("")]
    [Authorize(Roles = "...some role...")]
    [ValidateAntiForgeryToken]
    public ActionResult Add(CreateUpdateSmVizSchemeDto dto,  ICreateSmVizScheme service)
    {
       ... code to update the VizScheme and return json
    }

他の誰かがこれを克服しましたか?多くのグーグル検索でコメントが投稿されました。「ASP.NET MVC は、AntiForgery クラスと [ValidateAntiForgeryToken] 属性を通じて、偽造防止トークンの組み込みサポートを提供します。現在、この機能は Web API に組み込まれていません。ただし、 (KnockoutJS) テンプレートには、Web API のカスタム実装が含まれています。 ". これは、彼らが自分で書くことを示唆しています。

他の誰かがこれに当たったことがありますか?もしそうなら、どのように解決しましたか? 明らかな何かが欠けていますか、それとも独自の ValidateAntiForgeryToken メソッドを作成する必要がありますか? ご意見をお待ちしております。

アップデート

@MrOggy85 が提供する素晴らしいスタック オーバーフロー リンクには、さらに多くの情報が含まれています。$.ajax を使用して JSON データを投稿するときに AntiForgeryToken を提供するにはどうすればよいですか? を参照してください。. 独自の AntiForgery テストを作成する予定であり、完了したら投稿します。

4

2 に答える 2