
>用户每5分钟尝试登录10次
>如果用户超过10次尝试,我会显示“您需要等待
登录“消息
>一旦经过5分钟,我需要重置尝试次数
并让用户再尝试10次.
我想在不使用Timer的情况下这样做,我将大部分信息存储在Session中
public class LoginExp{ public DateTime FirstAttempt; public int NumOfAttempts;} 我将FirstAttempt DateTime存储在页面加载上.
在“登录”按钮上单击:
>我增加了NumOfAttempts
>我需要检查NumOfAttempts< 10在相同的5分钟时间段内.我可以获得FirstAttempt和DateTime.Now之间经过的分钟数并且做5的mod,但是这不会告诉我这个时间段(换句话说,用户可能在第2分钟尝试了3次)然后在第7分钟回来再次尝试.这个mod会给我相同的价值.
有关如何做到这一点的任何想法?
// Store a List of attemptsvar attempts = new List<DateTime>();// Determine if 10 or more attempts have been made in the last 5 minutesbool lockout = attempts.Where(a => (DateTime.Now - a).TotalMinutes <= 5).Count() >= 10;// Register an attemptattempts.Add(DateTime.Now);// Remove attempts older than 5 minutesattempts.Where(a => (DateTime.Now - a).TotalMinutes > 5).ToList() .ForEach(a => attempts.Remove(a));
您还可以将尝试存储在数据库中,这样可以为您提供安全性的papertrail.同样的方法适用 – 计算不到5分钟的记录.
总结以上是内存溢出为你收集整理的如何在C#中解决这个时间段问题全部内容,希望文章能够帮你解决如何在C#中解决这个时间段问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)