我正在为MVC 5开发一个后端,以便客户在他们的网站上进行更新。但是我遇到了这个错误:
Error Image 这是具有AntiForgeryToken
方法的控制器[ValidateAntiForgeryToken]
[Authorize(Roles = "Admin")]
[System.web.Mvc.AuthorizeSectionccess(sectionname = "IT")]
public ActionResult Create()
{
return View();
}
[ValidateAntiForgeryToken]
[Authorize(Roles = "Admin")]
[System.web.Mvc.AuthorizeSectionccess(sectionname = "IT")]
[System.web.Mvc.AuthorizePermitionAccess(PermissonType = "Add")]
[HttpPost]
public ActionResult Create(Welcome_conteudoPage model)
{
DB.Welcome_conteudoPage.Add(model);
DB.SaveChanges();
return Redirect("Index");
return View(model);
}
这就是视图
@using (Html.BeginForm("Create", "ConteudosPageController", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div>
@Html.TextAreaFor(model => model.ConteudoStandard)
</div>
<div>
<input type="submit" value="Inserir" class="btn btn-primary"/>
</div>
<div>
Texto:
@Html.DisplayFor(model => model.ConteudoStandard)
</div>
}
我在两端使用AntiForgeryToken但仍然出现错误。我知道有成千上万的这样的问题,但我已经尝试了所有提议的解决方案3天,没有任何结果。
编辑:我忘了提到该视图将调用一个tinyMCE编辑器的控制器和模型答案 0 :(得分:1)
这可能不是答案,但是,您可能误解了防伪标记的作用以及使用位置。
首先,当您在视图中使用@ Html.AntiforgeryToken时,它会在会话或cookie中注册某些内容(无法记住哪些内容)。
validate anti伪造令牌属性查找该令牌并将其与隐藏字段中传入的令牌进行匹配。如果不匹配,那么很可能邮寄请求并非来自您的观点。
需要注意的是,这需要请求中的body参数才能发送令牌。在没有正文的请求中你不会有这个。 Get请求没有正文,因此不需要validateantiforgerytoken属性。