python 登錄接口三次鎖定


要求:

  1. 輸入用戶名,密碼
  2. 認證成功顯示歡迎信息
  3. 輸入錯誤三次后鎖定用戶

Readme:

  1.normal_user是存放用戶id及密碼的文件

  2.lock_file是存放被鎖定的用戶id的文檔,默認為空.

  3.程序會對normal_user里的合法用戶id進行判斷,若連續輸入用戶id錯誤達三次程序直接退出.

  4.程序會輸入對正確用戶名后的密碼進行判斷,輸入密碼有3次機會,連續三次錯誤則會鎖定用戶id並且退出.

流程圖:

  

代碼:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2016/12/1 15:24
 4 # @Author  : zjz10
 5 # @Site    : 
 6 # @File    : login_interface.py
 7 # @Software: PyCharm
 8 import os,sys,getpass   #導入os,sys,getpass 模塊
 9 os.system('cls')        #使用os模塊中的system方法傳入('cls')參數,達到清屏的效果
10 #os.system('clear')     #這是在linux中清屏的方法
11 u = 0                   #用戶的循環次數
12 while u < 3:            #只要用戶登錄異常不超過3次就不斷循環
13     username = input('請輸入您的用戶名:')       #使用input 使用戶輸入並賦值給username變量
14 
15     lock_f = open('lock_file','r+')             #打開lock_file文件,權限是讀取更新,並賦值給lock_f變量
16     lock_list = lock_f.readlines()              #使用.readlines()的方法逐行讀取lock_file文件,並賦值給lock_list變量
17 
18     for lock_line in lock_list:                 #使用for循環讀取lock_file的內容
19         lock_line = lock_line.strip('\n')       #使用.strip()的方法去點換行符
20         if username == lock_line:               #使用if 進行判斷用戶輸入的參數在lock_file文件中是否存在
21             print('用戶 %s 已經鎖定,請聯系您的系統管理員' % username)   #如果存在打印輸出
22             sys.exit(1)                         #sys模塊的.exit()方法表示退出
23 
24     #user_f = open('normal_user','r')               #這樣的方式也是可行的
25     #user_list = user_f.readlines()                 #這樣的方式也是可行的
26 
27     with open('normal_user','r') as user_f:         #使用with open打開normal_user文件,權限是只讀,並as賦值給
28         user_list = user_f.readlines()              #使用.readlines()的方法逐行讀取normal_user文件,並賦值給user_list變量
29 
30     for user_line in user_list:                     #使用for循環讀取normal_user的內容
31         (user,passwd) = user_line.strip('\n').split()   #分別獲取帳號和密碼信息
32         if username == user:                            #使用if判斷用戶輸入的用戶是否在normal_user中存在
33             p = 0                                       #輸入密碼的循環次數
34             while p < 3:                                #只要用戶登錄異常不超過3次就不斷循環
35                 password = getpass.getpass('請輸入您的密碼:')      #使用getpass模塊的.getpass方法讓用戶輸入密碼(輸入的時候不會顯示)
36                 if password == passwd:                  #使用if判斷用戶輸入的密碼在normal_user中是否存在(相等)
37                     print('歡迎 %s 登錄系統' %username)   #用戶名密碼全部相等(存在)打印歡迎登錄信息
38                     sys.exit(0)                           #sys模塊中的.exit()方法退出
39                 else:
40                     if p != 2:                              #p=2時,是最后一次機會,不用在提示還剩余0次機會了
41                         print('對不起,%s 的密碼錯誤,請重新輸入,你還有 %d 次機會'%(username,2 - p))
42                 p += 1                                      #密碼輸入錯誤后,循環值增加1
43             else:
44                 lock_f.write(username + '\n')
45                 #lock_f.write('%s \n' %username)
46                 sys.exit('對不起 %s 用戶已經鎖定,請聯系管理員' % username)
47         else:
48             pass                                                  #當用戶沒匹配時,跳過並繼續循環
49     else:
50         if u != 2:                                          #i=2時,是最后一次機會,不用在提示還剩余0次機會了
51             print('對不起,%s 輸入錯誤,請重新輸入,你還有 %d 次機會' %(username,2 - u))
52     u += 1                                                  #當用戶輸入錯誤時,循環值增加1
53 else:
54     sys.exit('因為你的錯誤輸入,程序已經退出,請重新運行')           #用戶輸入三次錯誤后,異常退出
55 lock_f.close()          #關閉lock_f文件
56 #user_f.close()
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM