web-dev-qa-db-ja.com

ASP.NET MVC Core2で偽造防止トークンチェックを無効にする方法

サードパーティのサーバーからホストされている場合は常に失敗するため、「AntiForgery」チェックを回避しようとしています。 ASP.NET Core 2.0MVCアプリケーションを使用しています。

このオプションをConfigureServices関数に追加しました。

services
    .AddMvc()
    .AddRazorPagesOptions( options =>
    {
        options.Conventions.AuthorizeFolder("/Account/Manage");
        options.Conventions.AuthorizePage("/Account/Logout");
        options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
    } );

しかし、それでも私はこの例外を受け取っています。

System.InvalidOperationException:偽造防止トークンを復号化できませんでした。
System.Security.Cryptography.CryptographicException:キー{6fb328e7-4808-4b5d-b7dc-870d126e5ca4}がキーリングに見つかりませんでした。

私は何かが足りませんか?

7
Adam

私の理解によると、何も無効にする必要はありません。デフォルトでは、asp net tag helperを使用してフォーム要素を作成すると、偽造防止トークンが配置されます

アクションメソッドで[ValidateAntiforgeryToken]アノテーションを使用して偽造防止トークンを検証するか、ValidateAntiforgeryTokenの構成をグローバルに定義して、システムが偽造防止トークンの検証を試みるようにするのはあなた次第です。

システムについて説明したようにシステムを構成していない場合、偽造防止トークンは検証されず、状況に問題はありません。

1
Kapil Ghimire

IgnoreAntiforgeryToken属性(注文は> 1000でなければなりません)をかみそりのページモデルに追加します。

例えば:

namespace CWACpch.Pages
{
    [IgnoreAntiforgeryToken(Order = 2000)]
    public class CreateOrderModel : PageModel
    {
1
Luca Ziegler