带有超链接的ValidateAntiForgeryToken

时间:2014-02-02 06:41:19

标签: asp.net-mvc-4

我使用MVC4,我知道我们可以在Form with Post方法中使用ValidateAntiForgeryToken。我想知道是否可以在超链接中使用ValidateAntiForgeryToken ????

对于安全问题,我想确保页面来自第1页到第2页,这就是我想要验证超链接的原因。

如果是,我们该怎么做?

2 个答案:

答案 0 :(得分:1)

我不确定您正在寻找的是ValidateAntiForgeryToken。 MVC实现创建一个令牌并将其存储在会话中。该令牌在会话的生命周期内对用户有效,并且它不是设计为在表单的基础上使用。

您可能想要做的是自己创建此令牌。生成第1页时,创建一个令牌并将其存储在会话中。您可以使用锚点并在链接中附加令牌。这样你就可以使用get了。第2页可以验证令牌,然后将其从会话中删除。

请记住,如果您在get变量中添加任何内容,则可能会有人将该页面添加为书签(使用GET变量)。

或者,你可以使用POST并让锚点调用一些javascript来完成调用。这当然不适用于不支持JS的浏览器。

答案 1 :(得分:0)

如果您希望每次访问第一页时只能访问第二页,则可以使用TempData进行此操作。

    public ActionResult PageOne()
    {
        TempData["FromPageOne"] = true;
        return View();
    }

    public ActionResult PageTwo()
    {
        //values in TempData are only accessible once 
        //so user must always come from PageOne
        if ((bool?)TempData["FromPageOne"] == true) 
        {
            //From page one!
        }
        else
        {
            //Came directly, from another URL, or was refreshed (F5)
        }
        return View();
    }