如何在C#中解决这个时间段问题

如何在C#中解决这个时间段问题,第1张

概述我正在尝试解决此业务问题: >用户每5分钟尝试登录10次 >如果用户超过10次尝试,我会显示“您需要等待 登录“消息 >一旦经过5分钟,我需要重置尝试次数 并让用户再尝试10次. 我想在不使用Timer的情况下这样做,我将大部分信息存储在Session中 public class LoginExp{ public DateTime FirstAttempt; public int Num 我正在尝试解决此业务问题:

>用户每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#中解决这个时间段问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1249164.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存