我正在向混合WebForms/MVC站点添加一些UI功能.在这种情况下,我将一些AJAX UI功能添加到WebForms页面(通过jQuery),数据来自MVC JsonResult.一切都在100%工作,但有一个例外:
我想实现AntiForgeryToken的XSRF保护.我已经将它与我的纯MVC应用程序上的ValidateAntiForgeryToken属性结合使用,但是想知道如何在WebForms中实现Html.AntiForgeryToken()方法. 以下是使用UrlHelper的示例.
我正确地将ViewContext/RequestContext"模拟"起来有些麻烦.我应该如何在WebForms页面中使用HtmlHelpers?
编辑:我想从我的WebForms页面检索AntiForgeryToken,而不是从MVC JsonResult.
我有以下ajax.actionlink调用Delete action method删除对象: -
@if (!item.IsAlreadyAssigned(item.LabTestID))
{
string i = "Are You sure You want to delete (" + @item.Description.ToString() + ") ?";
@Ajax.ActionLink("Delete",
"Delete", "LabTest",
new { id = item.LabTestID },
new AjaxOptions
{ Confirm = i,
HttpMethod = "Post",
OnSuccess = "deletionconfirmation",
OnFailure = "deletionerror"
})
}
Run Code Online (Sandbox Code Playgroud)
但有一个办法,包括@Html.AntiForgeryToken()与Ajax.actionlink删除通话,以确保没有任何攻击者可以通过发送虚假的删除请求?
BR
我看到的所有示例都看到了<form>标签内的AntiForgeryToken :
@Using Html.BeginForm("DoThis", "FromHere", FormMethod.Post, New With {.id = "MyId"})
@Html.AntiForgeryToken()
End Using
Run Code Online (Sandbox Code Playgroud)
这需要吗?我正在使用ajax/jQuery调用回到服务器的帖子.我正在使用此处提供的示例(preFilter),以便我可以检索AntiForgeryToken.我只是在表单标签中没有我的AntyForgeryToken.我只是将它放在我的根_Layout页面上并称之为好.为什么我还需要做其他事情?我想不出为什么我要......