我遇到了一个我不太了解的问题。
asp.net core 2.2.1使用剃须刀页面,我不得不手动生成防伪令牌,但所有文档似乎都声称剃须刀页面不需要。
对我在这里做错的任何见解吗?
如果从下面的表单中删除@ Html.AntiForgeryToken(),则不会添加令牌。如果您应该这样做,那就好了,我已经完成了,但是我能找到的每一个消息来源似乎都认为这不是必须的。
<form method="post">
@Html.AntiForgeryToken()
<div>Source Type: <input asp-for="filter.SourceType" value="JsonEvent"/></div>
<div>Source Name: <input asp-for="filter.SourceName"/></div>
<input type="submit"/>
</form>
答案 0 :(得分:1)
使用ASP.NET Core Razor页面时,您绝对不需要在表单元素内使用类似@Html.AntiForgeryToken()
的代码来生成AntiForgeryToken。提交表单时会自动生成并提交令牌。
您可以通过查看浏览器的开发工具部分来验证此想法。您可以检查标题,您将看到一个表格数据“ _RequestVerificationToken”,如此屏幕截图所示。
但是请注意,您的Ajax请求是不同的。例如,如果您使用jQuery Ajax方法发布到Razor页面的任何Post处理程序中,那么您将需要显式生成令牌并将标头与请求一起传递。
答案 1 :(得分:0)
根据Documentation,由于您使用的标记应该足够,因此不需要添加@Html.AntiForgeryToken()
:
<form method="post">
...
</form>
我会检查令牌是否未按照此article
中所述设置在表单底部