java程序中登录密码输错三次账户锁定,怎么实现求源码啊

解决方案 »

  1.   

    这个倒是没做过,不过原理应该是这样:在前台设置cookies,记录登陆的次数和对应的用户名……当错误达到3次,就向后台发送请求,锁定该用户名
      

  2.   

    用cookie的方式可以实现,但是有个缺点,清cookie后或者换台机器的话,账户又可以继续登录了。
    可以在数据库中记录用户错误次数,通过后台控制。
      

  3.   

    我想在表中加个状态是不是可以?如果是非法登录的话就直接返回false..
      

  4.   

    在后端表里面做一个计数器和一个flag, 每次用户名登陆先检查这个FLAG是不是锁定,如果不是,验证用户名和密码是否匹配。如果这个用户名登陆密码和数据库储存的密码不一样,计数器就加一,如果计数器等于三,把那个flag设置成锁定,等这个用户名再次登陆的时候,如果flag设置成锁定,就返回错误
      

  5.   

    可以在applicationcontext里维护一张登录名记录的hashtable,也可以在数据库里记录,是单独分表记录还是直接在用户表记录,需要记录历史登陆记录还是只需要记录最近几次次记录就看需求了,复杂有复杂的设计,简单有简单的设计,不要靠cookie和session记录就行,还不如ip可靠,当然ip也不是绝对可靠。
    比如五分钟内连续三次错误就锁定五分钟,那就记录最近两次错误登陆时间登陆的时候就判断是不是锁定,如果锁定就判断最后一次登陆时间和当前时间之间的间隔有没有超过五分钟,超过了就解除锁定,没超过就继续锁定。
    然后再这是第几次错误,如果是前两次就只记录,如果是三次以上就判断第一次与当前时间间隔有没有在五分钟内,如果在就锁定并记录,如果不在就记录并清除第一次,如果登陆成功就全部清除。
    登陆记录可以用链表,application里记录不需要频繁的读写数据库,速度快,但会占用jvm内存。
    同八楼,记录前先验证不然不管用户名存不存在都记录那不是内存溢出就是数据库撑爆还降低效率。还可以写一个维护线程定时清除不需要的记录