2016-07-19 32 views
0

@Html.AntiForgeryToken()を同じプロジェクト内にあるフォームで使用すると、完全に機能します。ただし、フォームのアクション場所が同じソリューション内の別のプロジェクトにある場合、次のエラーが発生します。複数のASP.NETサブプロジェクト間でのAntiForgeryTokenの使用

偽造トークンを復号化できませんでした。このアプリケーションがWebファームまたはクラスタによってホストされている場合は、すべてのマシンで同じバージョンのASP.NET Web Pageが実行されており、明示的な暗号化と検証キーが指定されていることを確認してください。 AutoGenerateはクラスタ内では使用できません。

異なるプロジェクト間でAntiForgeryTokenを使用する方法はありますか?

+0

エラーメッセージの指示に従っていますか? ['web.config'の' machinekey'エントリを設定します(https://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations)? – spender

+0

マシンキーをどのように設定しますか? –

+0

あなたの答えにはリンクがあるとは気付かなかった。ありがとう! –

答えて

0

偽造防止トークンの署名/暗号化は、Web設定の<machinekey>セクションにあるキーによって管理されます。これが設定されていない場合、値はアプリごとに自動生成されます。つまり、各アプリは異なるマシンキーを持つため、あるアプリのトークンを別のアプリで復号化することはできません。

幸いにも、独自の値を生成し、各アプリケーションのWeb設定に保存することは可能です。これを実行するためのプロセスは、ここにも記述されている:

https://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations

セキュリティがあなたの最大の関心事ではない場合、あなたは多くの利用可能なオンラインのmachineKeyジェネレータのいずれかを検討するかもしれません。私はTLS/SSL/HTTPSで保護されていないし、これらのサイトの運営者を知らないので、信頼は大きな問題だと思う。

+0

私は今このエラーが発生しています:**偽造防止クッキートークンとフォームフィールドトークンが一致しません。** –

関連する問題