好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

编写登录窗口的具体步骤详解

思路:

1、参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则;

1)认证流程参考的是Linux的登录:当你输入完用户名密码后再验证用户名是否存在用户是否被锁定,然后在验证密码是否正确,如果验证不过去只会告诉你验证失败,而不告诉你到底是用户名错误还是密码错误,增加了暴力破解的难度;

2)关于输入 错误次数的计数和锁定 ,我参考的是 银行和支付宝的做法 ,也就是只关心你 输错了多少次 ,不关心输对了多少次,也就是说输错了两次,第三次输对了,前面的 计数不清零 ,也就是你今天输入了1000次输对了997次,只输错了3次,那对不起,依然要锁定。而且输入错误的3次不一定要连续。只要三次输入错误三次就锁定。

2、关于 计数和状态的保存我考虑还是通过文件来持久化保存 ,每次输入错误次数的 累加和锁定都保存到文件中 ,这样虽然增加了文件的操作,但是保证了程序的可靠性,这样程序退出,计数依然有效。文件类型如下:

alex sb lock 3
  tom 666 unlock 0
  geng 888 unlock 2

其中第一列是用户名,第二列是密码,第三列是用户状态(lock代表锁定,unlock代表没有锁定),第四列是登录次数(其实,登录次数只要错误的时候登录次数加一即可,没有错误的时候不用管它)。

代码如下:

           with open(filename,)           key,values                           lines =                print(             f.write( .join(lines) +                           values.insert(             f.write( .join(values) +   # messages = {:[,,],:[,,],:[,, # write_file(messages,   __name__ ==      active =               username = input(         users_dict = {}     #用户字典,用于存放用户的信息,键-用户名,值-         with open(,)              lines =              line                  user_list =                 users_dict[user_list[]] = user_list[           username               users_dict[username][] ==                  print(                                (users_dict[username][]) <                      user_pwd = input(                      users_dict[username][] ==                         print(                                               (users_dict[username][]) !=                              print( % ( - (users_dict[username][                         users_dict[username][] = (users_dict[username][]) +                                        print(                     users_dict[username][] =                      users_dict[username][] =                      write_file(users_dict,         elif username ==                         print()
运行结果如下:
请输入你的用户名(输入quit退出):tom
请输入密码:22
还有2次机会,用户将被锁定!
请输入密码:22
还有1次机会,用户将被锁定!
请输入密码:22
对不起,您输入的次数过多,你的用户名已经被锁定,请联系管理员!
请输入你的用户名(输入quit退出):alex
您输入的用户名已经锁定,请联系管理员! 

查看更多关于编写登录窗口的具体步骤详解的详细内容...

  阅读:44次