我使用MVC4,我知道我们可以在Form with Post方法中使用ValidateAntiForgeryToken。我想知道是否可以在超链接中使用ValidateAntiForgeryToken ????
对于安全问题,我想确保页面来自第1页到第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();
}