当一个用户试图多次登录失败后,如何锁住这个用户?(在线等待)

april1127 2007-05-22 11:36:32
当一个用户登录时多次密码输入错误(如3次),如何禁止该用户当天在此登录。
...全文
1352 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
april1127 2007-05-22
  • 打赏
  • 举报
回复
junzhang4008(程序可以让尸体动起来)
你说的问题 我考虑过了 谢谢你的提醒
ZHAOHONGFENG 2007-05-22
  • 打赏
  • 举报
回复
请设置Membership.MaxInvalidPasswordAttempts=限制的登录次数
这个只有在asp.net2.0中才可以用
找相关实例可以搜索
Membership.MaxInvalidPasswordAttempts
伴老思源 2007-05-22
  • 打赏
  • 举报
回复
在用户表中加个状态字段和日期字段,当登录时判断日期是否是本天,若是,则判断状态字段是否为锁定,否则登录,是则提示
LostDDx 2007-05-22
  • 打赏
  • 举报
回复
检查session["id"]是否为空
用Session["id"]对登陆用户进行保存
如果成功登陆后,就移出该用户的session
登陆一次错误就用int X进行判断和递增
x=3的时候 就限制该用户登陆
建立一个时间函数对session进行初始化
april1127 2007-05-22
  • 打赏
  • 举报
回复
是如果一个用户的登录密码已经连续两次输入错误,再换另外一个用户名输入,而这个用户的密码只输错了一次就不能在登录了。下面这样写好像问题很大,而且封锁的时间上我也不知道该如何设置。呵呵,很弱质的问题。


ViewState("LogCount") += 1
If ViewState("LogCount") > 2 Then
MessageBox("已连续3次输入错误,请24小时后再登录")
Exit Sub
End If
  • 打赏
  • 举报
回复


每次登陆都记录下尝试登陆时间啊。如果那个用户需要暂时屏蔽,直接查数据库的最后尝试时间

与当前时间对比,这样。想限制多长时间就能限制多长时间。不过在限制期间,尝试登陆的时候,尝试登陆时间不记录到数据库。否则功能就不管用了。^_^
Oceanson 2007-05-22
  • 打赏
  • 举报
回复
这取决与你想怎么锁
首先既然提出这个问题了你一定可以判断这个用户是否在反复登陆。
那么你是如何纪录他登陆了多少次的那?架设你用session或者Application或者就是logon页面的viewState,又或者用用户本地的cookie纪录。那么你可以继续控制,在checkLogin的时候多一个判断。登陆次数大于3直接return false.
1 session 有有效期 相当于使用零时cookie (默认的session行为就是用零时cookie实现的) 比较合适。
2 Application 占用全局资源,控制不当会造成系统问题。不适合用于用户点对点行为。当然如果是黑名单列表可以考虑。
3 ViewState 当前页面关闭即失效,不做考虑。
4 cookie 用户可以本地控制,禁止,不很适合。
5 当然如果你的系统安全要求高,你也可以写日志。在数据库根据时间段统计登陆失败次数控制,这是最强大和灵活的,还有存根。缺点是需要访问数据库。
  • 打赏
  • 举报
回复
你的用户数据从那里取得,就更新哪里的标记。
april1127 2007-05-22
  • 打赏
  • 举报
回复
琐住用户的登录ID:一天内输错3次登录密码(可以不是连续输入输入错误),则当天该用户无法在登录。
LostDDx 2007-05-22
  • 打赏
  • 举报
回复
你是要锁住 用户登陆所用的登陆ID?还是该IP地址下的所有用户登陆?
april1127 2007-05-22
  • 打赏
  • 举报
回复
可不可以具体地说一下,谢谢!
cantonstar 2007-05-22
  • 打赏
  • 举报
回复
用cookie
dr_lou 2007-05-22
  • 打赏
  • 举报
回复
24小时有点狠了吧
anncesky 2007-05-22
  • 打赏
  • 举报
回复
那你可以在设计数据库的时候在用户表里多加一个bit字段
用来控制
比如1为不锁,0为锁起
当用户登陆三次失败后
这个字段写为0就可以了

能正常登陆的这个字段必须为1
cengyidao 2007-05-22
  • 打赏
  • 举报
回复
数据库里加一个标记字段,设置值:0、1,默认是0。如果输错3次则改成1。
加一个时间记录字段,当标记字段变成1的时候记录当前时间。
加一个个触发器,检查时间记录字段不为空的记录,如果该记录+24小时>=当前时间,清空时间记录字段,改标记字段为0。
以上解决方案可完美实现你说的功能。
xuan.ye 2007-05-22
  • 打赏
  • 举报
回复
如果是做网站用成员资格,基本上不用改什么东西,数据库就OK了
OA不建议
confei 2007-05-22
  • 打赏
  • 举报
回复
是如果一个用户的登录密码已经连续两次输入错误,再换另外一个用户名输入,而这个用户的密码只输错了一次就不能在登录了。下面这样写好像问题很大,而且封锁的时间上我也不知道该如何设置。呵呵,很弱质的问题。


ViewState("LogCount") += 1
If ViewState("LogCount") > 2 Then
MessageBox("已连续3次输入错误,请24小时后再登录")
Exit Sub
End If
april1127 2007-05-22
  • 打赏
  • 举报
回复
很感谢大家的指点,晚上我会再来。在与各位请教!
flaugh 2007-05-22
  • 打赏
  • 举报
回复
membership中有设置啊!在web.config中找到membership节进行设置。
april1127 2007-05-22
  • 打赏
  • 举报
回复
Oceanson(洋之光)
你的讲解的知识点很全面
我会作为参考 很感谢

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧