根据 ASP.Net Core docs,会话状态的行为已经改变,因为它现在是非锁定的:
会话状态是非锁定的。如果两个请求同时尝试修改会话的内容,最后一个请求会覆盖第一个请求。Session 是作为一个连贯的 session 来实现的,这意味着所有的内容都存储在一起。当两个请求试图修改不同的会话值时,最后一个请求可能会覆盖第一个请求所做的会话更改。
我的理解是,这与 .Net Framework 中会话的行为不同,其中用户的会话根据请求被锁定,因此无论何时读取/写入它,您都不会覆盖另一个请求的数据或读取过时的数据,对于该用户。
我的问题:
有没有办法在 .Net Core 中重新启用用户会话的每个请求锁定?
如果没有,是否有可靠的方法来使用会话来防止给定用户重复提交数据?举一个具体的例子,我们有一个支付流程,该流程涉及用户从外部托管的 ThreeDSecure (3DS) iFrame(支付卡安全流程)返回。我们注意到有时(以某种方式)用户在 iFrame 中多次提交表单,我们无法控制。因此,这会触发对我们应用程序的多个回调。在我们之前的 .Net Framework 应用程序中,我们使用会话来指示付款是否正在进行中。如果在会话中设置了此标志并且您再次点击 3DS 回调,应用程序将阻止您继续。然而,现在似乎因为会话没有被锁定,当这些几乎同时发生的重复回调发生时,线程 'A' 设置 '
既然会话的工作方式发生了变化,那么处理访问同一会话的同时请求有哪些好方法?
JSfiddle:CODE
我试图用POST发送信息; 然后我添加了这段代码,在提交一次后禁用按钮:
$('form').submit(function(){
$('input[type=submit]', this).attr('disabled', 'disabled');
return true;
});
Run Code Online (Sandbox Code Playgroud)
但现在:按钮被禁用,页面被重新加载,但表单没有提交信息...请提供任何解决方案
PS:我需要像上面的代码一样的通用解决方案,我的表单没有id,因为我需要将此函数应用于我的所有表单....
我想防止双击提交按钮.
我的代码是......
onclick='this.style.visibility = "hidden";'
Run Code Online (Sandbox Code Playgroud)
但如果我输错了,它也会隐藏起来.我想在双击时禁用按钮,但在验证错误输入时按钮启用
我有一个简单的联系页面,用户仅在其中插入电子邮件地址,为避免重复发布,我想创建一个简单的sqlite3 db,该数据库只有一个具有唯一约束的字段来保存电子邮件哈希(我不想保留普通电子邮件)该数据库中的地址)
一个有效的电子邮件最大长度还是254?
我的数学知识有限,为避免冲突,合理的哈希值是多少?
javascript ×2
jquery ×2
.net ×1
.net-core ×1
asp.net ×1
asp.net-core ×1
c# ×1
email ×1
hash ×1
php ×1