首页 > 解决方案 > AntiforgeryToken 在 ASP.NET Core 中是强制性的吗?

问题描述

所以我在这里遇到了这个非常奇怪的问题。我有这个小页面(剃须刀页面)用于收集参展商对我们当地贸易展览会的粘连。这是一个非常简单的页面,可以收集姓名、电话、电子邮件等基本信息。最后,所有内容都会发布到存储信息的服务器上,并向请求者发送一封确认电子邮件。

现在我没有在任何地方使用过@Html.AntiforgeryToken助手(至少我认为不是真正需要的),但是,当我发布信息时,我的日志文件中出现异常,告诉我:

Microsoft.AspNetCore.Server.Kestrel|Connection id 0HLSFHDUIPON3, Request id 0HLSFHDUIPON3:00000001:应用程序引发了未处理的异常。System.InvalidOperationException:无法解密防伪令牌。---> System.Security.Cryptography.CryptographicException:在密钥环中找不到密钥 {dc285e40-0619-4182-a37c-20c1899a2e26}。

看来我需要将此@Html.AntiforgeryToken助手添加到我的页面中。或者有些东西我还没有完全掌握,因为我是这个应用程序上下文中的新手(ASP.NET Core)

请注意,我被迫使用 ASP.NET Core 2.0,因为我们的 ISP 还不支持最新版本,所以我不知道它是否已在后续版本中修复。

这是经过编辑的表单代码:

<form id="form1" class="form-horizontal" method="post">
    <div class="form-group headerSection">
        <table class="tableStandard">
            <tr class="rowInterline"><td /><td /></tr>
            <tr>
                <td class="labelPrompt">
                    <label for="partecipation.Name">Firm's name</label>
                </td>
                <td class="editInput">
                    <input type="text" asp-for="partecipation.Name" class="editBoxUpperCase" />
                    <span asp-validation-for="partecipation.Name" class="text-danger"></span>
                </td>
            </tr>
            <tr>
            .... a lot more tr but everything the same
            </tr>
        </table>
    </div>
    <div class="col-md-12">
        <div class="col-md-5">
            <input type="checkbox" asp-for="partecipation.Privacy" Text="" />&nbsp;
            <a class="horizSpace" asp-page='/Privacy'>Privacy consent</a>
        </div>
        <div>
            <input type="submit" value="Send the partecipation request" class="outline-btn info btn-lg" />
        </div>
    </div>
</form>

标签: c#asp.net-corerazor-pagesantiforgerytoken

解决方案


推荐阅读