c# - AntiforgeryToken 在 ASP.NET Core 中是强制性的吗?
问题描述
所以我在这里遇到了这个非常奇怪的问题。我有这个小页面(剃须刀页面)用于收集参展商对我们当地贸易展览会的粘连。这是一个非常简单的页面,可以收集姓名、电话、电子邮件等基本信息。最后,所有内容都会发布到存储信息的服务器上,并向请求者发送一封确认电子邮件。
现在我没有在任何地方使用过@Html.AntiforgeryToken
助手(至少我认为不是真正需要的),但是,当我发布信息时,我的日志文件中出现异常,告诉我:
Microsoft.AspNetCore.Server.Kestrel|Connection id
0HLSFHDUIPON3
, Request id0HLSFHDUIPON3: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="" />
<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>