如何在局部视图中使用MVC防伪标记(AntiForgeryToken)

5
我的问题更多地是针对处理部分视图的正确方法。每个局部视图都有一个令牌吗,还是整个容器共用一个令牌?
目前我们的表单包含5个部分视图的div。用户会对一系列认证问题进行回答,并根据回答显示1个或多个div/局部视图。每个局部视图都可以接受/拒绝(按钮选择),并提交整个表单(按钮)。目前,每个局部视图都有自己的AntiForgeryToken和相应的控制器中的令牌验证(以您指示的方式)。
使用这种方法,我们定期看到System.Web.Mvc.HttpAntiForgeryException
如果我有一个表单/视图,将根据用户的响应显示1个或多个局部视图。我需要在哪里放置AntiForgeryToken?在父视图中?在局部视图中?两处都要放?
我的理论是,当多个局部视图被表示时,令牌不匹配会导致错误报告。我的想法是将令牌移动到主/父视图中。
我在正确的轨道上吗?有人遇到过类似的问题吗?

可能在这里可以找到解决方案:https://dev59.com/KFzUa4cB1Zd3GeqP10xS 或 https://dev59.com/BGQn5IYBdhLWcg3wcm97 - Ashwini Verma
那么,一旦处理了所有的部分视图,表单就会提交了吗?我认为在父容器中不需要超过一个令牌。 - Jonesopolis
1个回答

7

如果您在单个表单中有多个部分视图,则只需在父页面(表单)中添加@Html.AntiForgeryToken()。

您无需在每个部分视图中都放置相同的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接