我正在尝试为我的 MVC3 应用程序实现 AntiForgeryToken。设置 FormAuthentication cookie 后,我遇到了 AntiForgeryToken 问题。这是一个解释我的问题的简单示例。
我有具有以下操作方法的家庭控制器:
public class HomeController : Controller
{
public ActionResult Logon()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logon(string userName, string password)
{
FormsAuthentication.SetAuthCookie(userName, false);
return View("About");
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult About(FormCollection form)
{
return View("PageA");
}
}
这是我的登录和关于视图:
登录.cshtml:
@using (Html.BeginForm("Logon", "Home"))
{
@Html.AntiForgeryToken()
<label> UserName :</label>
<input name = "userName" type="text"/>
<br />
<label> Password :</label>
<input name = "password" type="password"/>
<br />
<br />
<input type="submit" value="LogOn" />
}
关于.cshtml
@using (Html.BeginForm("About", "Home"))
{
@Html.AntiForgeryToken()
<p> This is conent of page About</p>
<input name = "moreInfo" type="text"/>
<input type="submit" value="SubmitAbout" />
}
我对“登录”发布方法没有问题。它正在验证 antiforgerytoken 并呈现 About 视图。有趣的是,当我在“关于”视图上发帖时,我收到错误“未提供所需的防伪令牌或无效”
有人能指出我在这里做错了什么吗?
感谢你的帮助。