.net mvc如何防止用户后退,现在保存订单后能回到订单页面重复提交,如何能防止后退

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net mvc如何防止用户后退,现在保存订单后能回到订单页面重复提交,如何能防止后退相关的知识,希望对你有一定的参考价值。

参考技术A 一般的web开发都是要遵循 PRG,即 Post,Get,Redirect原则。但是这样还是不能够完全有效的防止表单重复提交的问题。 在解决表单重复提交的问题上,可以使用以下方法1.提交之后表单的提交按钮立即失效,或者弹出div层阻止鼠标的重复点击,2.设置一个时间戳,当表单提交的时候校验时间戳,如果时间间隔太短则认为是重复提交。其实在真正处理表单重复提交的时候,还是有很大的难题的,大概在2年前,美团的订单在提交的时候,也没能很好的处理重复提交的问题追问

那如果禁用了js怎么办,post,get是指什么?已经post过去了再get?

本回答被提问者和网友采纳

ASP.NET MVC:如何防止会话锁定?

【中文标题】ASP.NET MVC:如何防止会话锁定?【英文标题】:ASP.NET MVC: how to prevent a session lock? 【发布时间】:2012-08-29 05:33:27 【问题描述】:

我有一个应用程序,它有一些控制器操作调用慢速 3rd 方 Web 服务。使用页面中的 AJAX 调用来调用这些操作。

我可以使用异步控制器来释放 ASP.NET 线程池,这很棒。但是会话呢?如果我使用 InProc 会话并请求“慢动作”,则特定用户无法向应用程序发出任何请求,因为他的会话被第一次“慢”调用锁定。

在 PHP 中有一个方法 session_write_close() 我可以使用如下:

    接受用户的慢动作请求 根据会话数据检查用户访问控制器/操作的权限 如果需要,在会话中写一些东西 致电session_write_close()从此请求关闭会话,来自同一用户的任何其他请求都可以访问它 打慢电话(也许以某种异步方式)

我知道我可以使用[SessionState] 属性在控制器级别禁用会话状态,但这不是解决方案。

有什么想法吗?

【问题讨论】:

为什么你认为会话被任何请求“锁定”了? 这里是详细信息:***.com/questions/3666556/…,这里是我关于类似主题的另一个问题:***.com/questions/2438493/… 这里是一个终极描述:***.com/questions/3629709/… 【参考方案1】:

我认为可能有几种情况。

1) 在控制器工厂中进行更改,并将其更改为在没有会话或某些客户会话实现的情况下生成控制器

2) 尝试阅读此article about sessionless controllers

【讨论】:

更改会话实现似乎不是一个好主意,我的问题中提到了无会话控制器。这是一个“按操作”实现:sapoval.org/per-action-custom-sessionstateattribute

以上是关于.net mvc如何防止用户后退,现在保存订单后能回到订单页面重复提交,如何能防止后退的主要内容,如果未能解决你的问题,请参考以下文章

点击浏览器后退按钮时如何刷新 ASP .NET MVC 页面

ASP.NET MVC:如何防止会话锁定?

如何在 MVC 3 中正确进行长轮询

如何防止 ASP.NET MVC 应用程序中的 DoS 攻击?

求HTML网页点击UE浏览器上的后退按钮后能回到上一次浏览的网页的代码!

ASP.NET MVC 创建 paypal webhook