Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使链接在单击后过期_C#_Asp.net_Webforms - Fatal编程技术网

C# 如何使链接在单击后过期

C# 如何使链接在单击后过期,c#,asp.net,webforms,C#,Asp.net,Webforms,基本上,我有一个带有“忘记密码”功能的电子邮件服务。正在向指定用户发送一个链接,该用户希望重置其密码 我想做的是让该链接在用户点击后过期(已被使用) 我正在使用C#的MVC和webforms。很遗憾,出于隐私目的,我无法共享代码 有什么想法吗?我建议使用有状态令牌 这意味着您将创建一个随机guid(可以基于用户名,但仍然是随机的) 将该guid存储在具有创建的日期时间和到期时间的用户/密码链接表中 发送guid为({random guid})的链接 单击链接时,在页面加载时,根据数据库检查随机g

基本上,我有一个带有“忘记密码”功能的电子邮件服务。正在向指定用户发送一个链接,该用户希望重置其密码

我想做的是让该链接在用户点击后过期(已被使用)

我正在使用C#的MVC和webforms。很遗憾,出于隐私目的,我无法共享代码


有什么想法吗?

我建议使用有状态令牌

这意味着您将创建一个随机guid(可以基于用户名,但仍然是随机的)

将该guid存储在具有创建的日期时间和到期时间的用户/密码链接表中

发送guid为({random guid})的链接

单击链接时,在页面加载时,根据数据库检查随机guid参数

如果不存在,则不允许重置密码。如果确实存在并且当前时间不超过到期时间,则允许重置密码并删除记录。如果太旧,只需告诉他们它已过期并删除该行


您可以使用tinyint列将记录设置为非活动状态,而不是删除记录。

唯一的部分通常是作为URL中的参数传递的某个键。该密钥将与用户关联。只要解除它的关联并处理掉钥匙。你的问题没有提供足够的细节来了解你的链接实际上是如何组成或工作的,所以很难说。提供足够的细节,让人们能够给你有意义的答案。1:生成唯一的令牌-可能是一个guid;2:存放在某个地方,通常过期;3:当页面被访问时(url中有令牌),检查令牌(及其含义),并将其杀死(逻辑或物理删除);4:没有4