在覆盖控制器中验证防伪令牌

本文关键字:令牌 验证 覆盖 控制器 | 更新日期: 2023-09-27 18:32:39

我有三个控制器,但Controller1继承自Controller2Controller2继承Controller3

例如

public class Controller1 : Controller
{
    [HttpPost]
    [ValidateAntiForgeryToken()]
    public virtual ActionResult Create(MyClass test)
    {
...
public class Controller2 : Controller1
{
...
public class Controller3 : Controller2
{
    [HttpPost]
    [ValidateAntiForgeryToken()]
    public override ActionResult Create(MyClass test)
...

也在视图中添加

@Html.AntiForgeryToken()

当有一个控件并且没有继承的良好工作时,但是当使用继承和覆盖方法时,验证防伪令牌得到错误。

验证防伪令牌无效并得到错误:

所需的防伪表单字段"__RequestVerificationToken"是 不存在。

[HttpAntiForgeryException (0x80004005):所需的防伪表单 字段"__RequestVerificationToken"不存在。

谢谢。

在覆盖控制器中验证防伪令牌

您的问题不在于您的控制器层次结构,而是因为请求中没有 AntiForgeryToken(如错误所述)。

为此,请将以下内容添加到发布到控制器的视图(窗体内):

@Html.AntiForgeryToken()