我在登录页面上定义了如下的防伪造令牌:
<%=Html.AntiForgeryToken(Constants.AntiForgerySalt)%>
我的登录方法如下所示:
[ValidateAntiForgeryToken(Salt = Constants.AntiForgerySalt)]
public ActionResult LogIn(string userName, string password, string attemptsKey)
{
.....
}
除了我处理注销的方式外,一切都很好。
对于注销,我有如下定义的actionlink:
<%=Html.ActionLink("Logout", "LogOut", "LogIn")%>
这显然意味着没有表单被提交到服务器。
ActionLink中指定的注销操作将执行,但当它重定向到指定了AntiForgeryToken的登录页面时,我将得到以下错误消息:
A所需的防伪令牌未提供或无效.
我对此感到惊讶,因为我认为它只适用于数据被发布的场景。
如果我重定向到一个只呈现AntiForgeryToken的页面,那么为什么会发生此错误消息?
发布于 2011-04-11 14:43:50
最简单的解决方案是装饰Login(..)使用HttpPost,并创建一个登录(.)使用HttpGet装饰的操作,它为登录页面提供服务。这将防止操作链接触发此操作。
https://stackoverflow.com/questions/5621419
复制相似问题