我使用ValidateAntiForgeryTokenAttribute时遇到了麻烦

时间:2017-09-30 10:01:53

标签: c# asp.net cookies authorization

我的项目功能中有2个cookie响应:

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
_httpContext.Response.Cookies.Add(cookie);
var cookie_new=new HttpCookie(new HttpCookie("test","vote"));
_httpContext.Response.Cookies.Add(cookie);

该项目正在用于用户授权,但是当我使用第一个将AJAX [type ='post']发送给某个动作的cookie时,我发错了msg说

  

“未提供所需的防伪令牌或无效。”。

然而另一个是成功。 我不明白问题是什么。

1 个答案:

答案 0 :(得分:0)

必须将ValidateAntiForgeryToken属性添加到控制器中的操作,如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MyAction()
{
...
}

但您还必须在表单上提供一个控件,通过添加以下内容来保存View中的防伪标记:

@Html.AntiForgeryToken()

如果您检查了渲染视图的页面来源,那么您应该会在隐藏的__RequestVerificationToken中看到input及其值。