如何在C#中解决这个时间段问题
发布时间:2020-12-15 08:25:28 所属栏目:百科 来源:网络整理
导读:我正在尝试解决此业务问题: 用户每5分钟尝试登录10次 如果用户超过10次尝试,我会显示“您需要等待 登录“消息 一旦经过5分钟,我需要重置尝试次数 并让用户再尝试10次. 我想在不使用Timer的情况下这样做,我将大部分信息存储在Session中 public class LoginEx
我正在尝试解决此业务问题:
>用户每5分钟尝试登录10次 我想在不使用Timer的情况下这样做,我将大部分信息存储在Session中 public class LoginExp { public DateTime FirstAttempt; public int NumOfAttempts; } 我将FirstAttempt DateTime存储在页面加载上. 在“登录”按钮上单击: >我增加了NumOfAttempts 解决方法
您可以存储尝试时间戳列表,并使用它来确定用户是否被锁定.这不是完整的代码,但这是基本的想法:
// Store a list of attempts var attempts = new List<DateTime>(); // Determine if 10 or more attempts have been made in the last 5 minutes bool lockout = attempts.Where(a => (DateTime.Now - a).TotalMinutes <= 5).Count() >= 10; // Register an attempt attempts.Add(DateTime.Now); // Remove attempts older than 5 minutes attempts.Where(a => (DateTime.Now - a).TotalMinutes > 5).ToList() .ForEach(a => attempts.Remove(a)); 您还可以将尝试存储在数据库中,这样可以为您提供安全性的papertrail.同样的方法适用 – 计算不到5分钟的记录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |