所以我想知道antiForegryToken有多重要,因为它给我带来了一些问题。
我有一个班级,我看看用户是否在角色“PremiumAnvändare”(它是瑞典语中的PremiumUser),如果不是,我将它们重定向到“rolenotfound”。
public ActionResult Create()
{
if (User.IsInRole("PremiumAnvändare"))
{
ViewBag.SammanhangsID = new SelectList(db.Sammanhangs, "SammanhangsID", "Namn");
return View();
}
Response.Redirect("rolenotfound");
return View();
}
但是当用户被重定向到rolenotfound时,我得到了错误
解决了这个问题。发生了'System.Web.HttpException'类型的异常 System.Web.dll但未在用户代码中处理
在发送HTTP标头后,服务器无法添加标头。
我做错了什么或者可以删除令牌吗?我对它进行了一些调查,我知道这是为了抵御跨站点攻击,但我不相信这会成为一个问题,因为我们正在制作移动应用程序。但是请纠正我并教我,这样我才能做到这一点。
答案 0 :(得分:0)
我认为您遇到的问题是您在重定向后没有结束您的回复。 Response.Redirect("rolenotfound");
和Response.Redirect("rolenotfound", true);
之间的区别在于,第二个将中止线程并阻止执行return View();
。
我假设,虽然执行了重定向,return View();
将执行并抛出System.Web.HttpException
。
CSRF在我看来非常普遍(至少如果你有一个对攻击者有吸引力的应用程序),但没有人会告诉你是否需要这种保护 - 你必须自己决定。
答案 1 :(得分:0)
我通过改变
解决了这个问题Response.Redirect("rolenotfound");
return View();
到
return PartialView("rolenotfound");
这并没有妨碍我使用防伪标记,但是在这种情况下不包括布局,但这在我的项目中不会成为问题。