c# - 如何在 C# 中解决此时隙问题

标签 c# asp.net

我正在尝试解决这个业务问题:

  • 用户每 5 分钟尝试登录 10 次
  • 如果用户尝试超过 10 次,我会显示“您需要等待 登录”消息
  • 5 分钟过去后,我需要重置尝试次数 并让用户再尝试 10 次。

我想在不使用 Timer 的情况下执行此操作,并且我将大部分信息存储在 Session

public class LoginExp
{
  public DateTime FirstAttempt;
  public int NumOfAttempts;
}

我在页面加载时存储 FirstAttempt 日期时间。

在登录按钮上单击:

  • 我递增 NumOfAttempts
  • 我需要检查 NumOfAttempts < 10 相同的 5 分钟时间段内。我可以得到 FirstAttemptDateTime.Now 之间经过的分钟数,并做 5 的模数,但这不会告诉我这是在哪个时间段(在其他换句话说,用户可能在第 2 分钟尝试了 3 次,然后在第 7 分钟回来再次尝试。mod 会给我相同的值。

关于如何做到这一点有什么想法吗?

最佳答案

请不要使用计时器。为这些数据和用户数据留出空间,以便持久保存,其中存储了某种形式的凭据。只需保留上次登录尝试时间和尝试次数 - 如果时间大于 n,则下一次尝试会清除之前的计数并从 0 开始,依此类推。

关于c# - 如何在 C# 中解决此时隙问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199729/

相关文章:

c# - 试图从 txt 文件填充文本框和 ListView

jquery - SignalR : Could not cast or convert from System. 字符串到 System.Collections.Generic.IEnumerable

asp.net - 如何使 HTML 页面适合 Web 浏览器大小?

c# - FindControl 找不到控件

c# - 将数据行从一个表复制到不同数据库中的另一个类似表 c#

c# - 在 C# 中使用 linq 计算 IEnumerable 中项目的出现次数

javascript - CollapsiblePanelExtender 点击事件

asp.net - 仅当用户登录时才显示 div 标签

c# - 从 ImageFormat.MemoryBMP 确定文件类型

c# - 从 1 个项目列表创建 2 列项目列表