2

新しいMVC4Webプロジェクトを作成しましたが、すべてユーザーログインなどで正しく機能します。

これにWebAPIを追加しました。これにより、EntityFrameworkからデータが返されます。

モバイルアプリからログインできるようにし、APIを呼び出して、ログインしているユーザーに基づいて結果を返すことができるようにしたい。

アプリケーション/jsonとしてコンテンツタイプを使用してアカウント/ログインにPOSTリクエストを送信しました。charset = utf-8ですが、次のエラーメッセージが表示され続けます。

>>

必要な偽造防止Cookie「__RequestVerificationToken」が存在しません。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.Web.Mvc.HttpAntiForgeryException:必要な偽造防止Cookie「__RequestVerificationToken」が存在しません。

これをどのように解決しますか?または偽造防止Cookieを生成しますか?

私はネットを調べましたが、これらにはasp.netベースのソリューションが含まれていました-iOS/Androidからこれらのリクエストを行います。

ありがとう。

4

2 に答える 2

1

実際に問題を解決したようには聞こえません。WCF認証サービスは、偽造防止トークンとは何の関係もありません。偽造防止トークンは、クロスサイトリクエストフォージェリ(CSRF)と呼ばれるものを阻止するために使用される手法です。スティーブ・サンダーソンのブログにそれについての良い説明があります。実装の基本は、ビューにタグがあり(スニペットを参照)、[ValidateAntiForgeryToken]MVCがトークンの存在を「強制」するアクションの属性です。

<% using(Html.Form("UserProfile", "SubmitUpdate")) { %>
    <%= Html.AntiForgeryToken() %>
    <!-- rest of form goes here -->
<% } %>

この例外が表示される理由は、偽造防止トークンを含めずにアカウント/ログインにPOSTしているためです。Web APIメソッドを介してログイン/認証を処理しようとしている場合でも、偽造防止トークンを使用できます。必ずそれをビューに渡して、APIにPOSTバックしてください。

于 2012-11-12T03:59:03.743 に答える
0

解決済み:

代わりにWCF認証サービスを使用しました。

http://msdn.microsoft.com/en-us/library/bb398990(VS.100).aspx

于 2012-11-11T00:11:07.380 に答える