ASP.NET MVC 3中LogOff的AntiForgeryToken

时间:2011-04-11 12:42:30

标签: asp.net asp.net-mvc

我在登录页面上定义了以下antiforgerytoken,如下所示:

<%=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的登录页面时,我收到以下错误消息:

  

所需的防伪标记不是   提供或无效。

我对此感到惊讶,因为我认为它仅适用于发布数据的场景。

如果我重定向到仅呈现AntiForgeryToken的页面,那么为什么会出现此错误消息?

1 个答案:

答案 0 :(得分:0)

您最简单的解决方案是使用[HttpPost]修饰Login(..),并创建一个用[HttpGet]修饰的Login(..)动作,该动作为Login页面提供服务。这将阻止操作链接触发此操作。