Asp.Net MVC POST 处理事项
2016-09-02 11:49
351 查看
1.Asp.net MVC中防止HttpPost重复提交
使用惯了Asp.Net的服务器控件了,
突然转到MVC框架上来遇到这么个问题.
比如说网速慢的时候, 用户频繁的点击提交按钮, 或者是按F5刷新页面等等。解决方法很简单。
解决方案:
1.
在页面生成时,比如说Index的Action中,开启一个SESSION,存储一个唯一的值(一般.net中使用的是Guid.NewGuid()这个方法)。
2. 同时在隐藏文本域中存储SESSION中的这个值。
3.
Post的时候,POST到另一个Action中,这个Action不重新生成SESSION,只是将现有的SESSION与提交的隐藏文本框中的数据进行对比。
HttpPost方法中将隐藏文本域中的值与SESSION中的值进行比对,如果一致,则为正确提交。不一致,则进行异常处理。
2. Asp.Net MVC3.0中防止跨站的POST
在Form中添加
@Html.AntiForgeryToken();
在后台的Action中增加
[ValidateAntiForgeryToken]
这个方法还可以添加自定义的参数
@Html.AntiForgeryToken("SaltValue");
后
4000
台的Action中,必需指名Token的值才允许正常提交.
[ValidateAntiForgeryToken Salt=("SaltValue")]
使用惯了Asp.Net的服务器控件了,
突然转到MVC框架上来遇到这么个问题.
比如说网速慢的时候, 用户频繁的点击提交按钮, 或者是按F5刷新页面等等。解决方法很简单。
解决方案:
1.
在页面生成时,比如说Index的Action中,开启一个SESSION,存储一个唯一的值(一般.net中使用的是Guid.NewGuid()这个方法)。
2. 同时在隐藏文本域中存储SESSION中的这个值。
3.
Post的时候,POST到另一个Action中,这个Action不重新生成SESSION,只是将现有的SESSION与提交的隐藏文本框中的数据进行对比。
HttpPost方法中将隐藏文本域中的值与SESSION中的值进行比对,如果一致,则为正确提交。不一致,则进行异常处理。
2. Asp.Net MVC3.0中防止跨站的POST
在Form中添加
@Html.AntiForgeryToken();
在后台的Action中增加
[ValidateAntiForgeryToken]
这个方法还可以添加自定义的参数
@Html.AntiForgeryToken("SaltValue");
后
4000
台的Action中,必需指名Token的值才允许正常提交.
[ValidateAntiForgeryToken Salt=("SaltValue")]
相关文章推荐
- Asp.net MVC——httppost与httpget注意事项
- Asp.net mvc 3 - JSON post & AOP
- ASP.NET MVC 入门 6、TempData
- ASP.NET MVC 入门 2、项目的目录结…
- ASP.NET MVC 入门 1、简介
- asp.net 事务处理
- ASP.NET MVC 入门 4、Controller与…
- ASP.NET MVC 入门 3、Routing
- ASP.NET Forum 中对异常:"对象名 'Moderators' 无效" 的处理
- RSS ToolKit for ASP.NET 2.0
- ASP.NET AJAX Drag And Drop
- Run Tasks in an ASP.NET Application Domain
- Tip/Trick ASP.NET 2.0: DropDownList DataBind
- Efficient Data Paging and Sorting with ASP.NET 2.0 and SQL 2005
- ASP.NET 2.0: Forms Authentication Across domains
- ASP.NET AJAX 1.0 Beta2 Released!
- ASP.NET AJAX 1.0 源码发布
- ASP.NET:How a page handles requests.
- Cool Tips and Tricks with ASP.NET 2.0 posted by Scott
- Working with Web Resources in ASP.NET 2.0