这是问题......
我的后端软件向用户发送一封包含数据的超链接的电子邮件(即“?dataName = dataYadaYada”)。
用户收到电子邮件并点击超链接
我的ASP.NET应用程序获取请求,处理queryString中的数据,并发回“谢谢你”的响应页面以及其他页面的链接。
问题:如果用户重新发布页面或点击其中一个页面链接,我的ASP.NET会再次使用相同的queryString获取相同的请求,并错误地处理它。
我的ASP.NET应用程序如何识别并跳过已经处理过的请求?
我能想到的唯一解决方案是将后端的唯一序列号放入电子邮件超链接,然后将ASP.NET存储到会话变量中,以检测相同queryString的第二个请求。
有更好的方法吗?
答案 0 :(得分:1)
非常简单 - 当您收到请求时,在数据库中记录已使用dataname,并在每次收到请求时检查它。
如果dataname本身不够独特,那么是的是附加另一个包含某些内容的参数(如果有意义的话,与dataname结合使用)允许您识别发起它的特定电子邮件。
P.S。使用会话并不好,因为它是临时的,并在浏览器关闭时丢失。如果用户在新的浏览器会话中再次单击该电子邮件,则不会检测到该电子邮件。您需要像数据库一样的永久存储