How to extend or override BeginForm to include a AntiForgeryToken field
I was reading this article (http://weblogs.asp.net/dixin/archive/2010/05/22/anti-forgery-request-recipes-for-asp-net-mvc-and-ajax.aspx) about how to prevent CSRF attacks. It seems like the solution is to create a tag inside each form.
<%: this.Html.AntiForgeryToken(Constants.AntiForgeryTokenSalt)%>
However, I really don't want to copy and开发者_Python百科 paste that code inside of each form. I would like to extend or override the BeginForm to create a BeginSecureForm that automatically adds the AntiForgeryToken. I am not sure how to add content inbetween of the BeginForm and EndForm.
Any ideas?
You should use this instead, to place the token at the right place, after the form :
public static MvcForm BeginAntiForgeryForm(this HtmlHelper htmlHelper)
{
var mvcForm = htmlHelper.BeginForm();
htmlHelper.ViewContext.Writer.Write(htmlHelper.AntiForgeryToken().ToHtmlString());
return mvcForm;
}
精彩评论