一道关于登陆的面试题

kaitokid_94_1412 2010-10-01 10:40:34
一个登陆模块,当用户密码输入错误3次,当天就不能再登陆了,怎么在后台实现
...全文
540 点赞 收藏 57
写回复
57 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hchen1982 2010-10-12
个人觉得30楼的最佳
回复
King_Bright 2010-10-12
顶3L。。。。。。。。。。
回复
renjianguokeivor 2010-10-11
学习了。。。。
回复
nvrenbumeigaga 2010-10-11
另外建立一张用户登录表为最佳
原因如下:
* 不改变现有的数据库表
* 比较好实现
回复
huangqibing0626 2010-10-11
学习了。。。另外建立一张用户登录表为最佳。
回复
li26338710 2010-10-11
学习中……
回复
jump0907 2010-10-11
[Quote=引用 13 楼 xxpp688 的回复:]
改数据库,我觉得不是一个好办法。
项目一般是由几个人合作完成的,数据库方面我们能不动尽量不动。
我觉得session或者cookie统计登陆次数比较好。
[/Quote]
还是这个好些,数据库的东西能不动就不要动。
回复
a619225471 2010-10-11
[Quote=引用 1 楼 ticmy 的回复:]
数据库弄个字段,登陆错误就加上一次,输入正确就清0

每天晚上0点的时候跑一个定时服务,将所有的计数清零
[/Quote]
up
回复
zn85600301 2010-10-11
[Quote=引用 1 楼 ticmy 的回复:]

数据库弄个字段,登陆错误就加上一次,输入正确就清0

每天晚上0点的时候跑一个定时服务,将所有的计数清零
[/Quote]
这个是最简单的
但是我想弱弱的问一下,如果一个用户已经登录成功,另外有人用他的用户名试密码3次失败,他的页面一旦失效 嘿嘿
悲剧了吧 锁一天太狠了 现在密码账号太多 谁能记那么清
建议15分钟就行了
回复
EsayHade 2010-10-11
路过,学习!!!
回复
luoye_teng 2010-10-11
数据库弄个字段,登陆错误就加上一次,输入正确就清0
每天晚上0点的时候跑一个定时服务,将所有的计数清零

1楼的方式是行的通,但是不建议还每天跑个定时任务清零,

个人认为可以这样实现
一个表四个字段,user,pwd,count,static
count记录登录错误次数,static状态
所有初始状态为可用,根据count记录条数自动改变static状态,
比如说一个用的登录错误三次之后改用的状态为禁锢。当天的24小时内部不可用,
可在登录功能里,每天第一次登录之前将状态和次数都清零,记录第一次登录。
只是时间的判断和操作,网上查查到处是。




回复
weizhongjun8 2010-10-11
搞张登录流水表,每天登录添加一条数据,表中添加一个密码输入错误的次数字段,就这样
回复
zengzhenJob 2010-10-11
个人觉得还是30楼的最佳
回复
dongjh411526 2010-10-11
可以设计一张表来记录登录失败的信息,如果某个用户一天登录失败三次就不再允许登录,而且每天12点定时进行一次数据的整理清空!
回复
chenbb110 2010-10-11
[Quote=引用 36 楼 lx626195969 的回复:]

30楼分析的很透彻,学习了 ,谢谢
[/Quote]
+1
回复
cw_tkong 2010-10-09
[Quote=引用 30 楼 cw_tkong 的回复:]
大家看看我的分析

不好的办法
session cookie

1. session 也可行就是session 有个过期的时间 一般默认30分钟 就过期了 这样用户还可以登录 如果session设置不过期那就增加服务器负担了 设计思路是 程序 中能不用session就尽量不用来尽可能的减少服务器的负担 可以用cookie代替也行 这是session不可取的
2. cookie 也不好 ……
[/Quote]

我的分析已经很清楚了
根本记用不到什么 定时任务 到什么什么时候更新表字段
动一下脑袋啊

只有是有登录密码错误问题更新表中时间就是
我还是把我最赞成的表设计给出吧


表名:loginfail
字段:
userId varchar 登录Id
LoginTime datetime 登录时间
loginSum int 登录错误次数

如果是登录一次错误select loginfail 中是否有userId 如果没有就 insert
如果有就update LoginTime loginSum

在程序中 如果是userId 中记录的是当天的数据 就更新或者loginSum大于3次就 response 用户提示 登录次数密码错误 如果不是当天就更新LoginTime 直到loginSum 为3次给出提示

或者不按照我的设计 在userInfo表中设置字段更新也可以

最好的办法还是操作数据库 客户端记录不太好 如果是做银行、国家、大型网站方面的设计绝对是选择数据库 不选择客户端
回复
远方夕阳 2010-10-08
[Quote=引用 22 楼 wsdsgfuqiang 的回复:]
最好还是不要对数据库进行修改。
建议可以考虑 使用session来考虑业务逻辑。
比如 可以在session中设置一个属性用来记录错误登陆次数
[/Quote]
虽然是个想法 但是不靠谱 等session后 怎么搞?重新记?
回复
loverightzhou 2010-10-08
2楼的好点 !~ 定时任务SPRING 可以配置啊 。。
或者可以自己写一个TIEMER功能之类的功能就好了
回复
-自由人生- 2010-10-06
[Quote=引用 3 楼 magong 的回复:]
用户表增加2个字段,保存最后登录日期和错误次数,每次登录若日期不同就更新日期并清除错误次数,错误次数若已经达到3次则直接验证失败,然后验证密码,若登陆错误就加上一次。
[/Quote]

这个可行。。
回复
弑忆 2010-10-06
[Quote=引用 22 楼 wsdsgfuqiang 的回复:]
最好还是不要对数据库进行修改。
建议可以考虑 使用session来考虑业务逻辑。
比如 可以在session中设置一个属性用来记录错误登陆次数
[/Quote]

这个方法重新开一下浏览器就没用了,二楼的方法不错
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-10-01 10:40
社区公告
暂无公告