Python练习,模拟用户登陆接口

实现需求以下:python

  1. 同一个用户名连续失败三次则锁定,无论用户名是否在,锁定后在下次运行脚本登陆是一样是锁定状态bash

  2. 使用文件存储用户名和密码信息,与文件里面的用户名密码进行认证对比app

  3. 用户名不存在和密码错误提示不能够相同,登陆成功,帐号被禁用,密码错误,用户不存在须要有相关的提示信息ide

脚本以下:函数

#!/usr/bin/python
#coding:utf8

class Login():
 
    def userInfo(self):
        #将用户名密码信息文件处理成一个字典
        with open("userinfo.txt", "r") as file:
            userDict = {}
            for i in file:
                userList = i.split(":")
                userDict.update({userList[0]:userList[1].rstrip()})
        return userDict
    
    def lock_userInfo(self):
        #将否认的用户的文件处理成一个列表
        with open("lock_userinfo.txt", "r") as file:
            userList = []
            for i in file:
                userList.append(i.rstrip())
        return userList
    
    def lockUser(self, username):
        #若是相同用户登陆错误三次就调用此函数,将用户永久琐定,写入文件
        with open("lock_userinfo.txt", "a") as file:
            file.write(username + "\n") 

    def userLogin(self):
        #登陆
        lockList = []
        while True:
            username = raw_input("请输入用户名: ")
            password = raw_input("请输入用户密码: ")
            if lockList.count(username) < 3:
                lock = self.lock_userInfo()
                user = self.userInfo()
                if username not in lock:
                    if username in user:
                        if user[username] == password:
                            print("登陆成功")
                        else:
                            lockList.append(username)
                            print("密码错误")
                    else:
                        lockList.append(username)
                        print("用名不存在")
                else:
                    print("此用户已禁用")
            else:
                self.lockUser(username)
                print("用户登陆次数超过限制,已禁用")
 

if __name__ == "__main__":
    login = Login()
    login.userLogin()

脚本使用方法:ip

  1. 首先须要在脚本所在的目录下面建立两个文件lock_userinfo.txt和userinfo.txtci

  2. userinfo.txt存入用户信息,一行一个用户,用户名和密码用冒号分开,不要有空格,以下所示:input

    BBF9L~}}0CZHT3)GB2Y)FU7.png

  3. lock_userinfo.txt为被否认的用户列表文件,初始为空,若是有同一用户登陆出错三次就会被永久写入该文件,没法登陆,解锁用户就是删除该文件里面的用户名
    it

运行结果以下:class

  1. 正确登陆

    8CTY~4T{]XC4_Z]RBT`~7E1.png

  2. 密码输入错误三次

    74Y1HUAP{ZPL$T$IQKZHU2L.png

  3. 用户被永久否认后再登陆

    U(3`IUQ28S(@(HINI4]~%M8.png

  4. 用户名输入错误屡次后

    ZM2O%R6]`B22YVNC1L)@RRU.png

    这里是第五次才禁用,和需求有点出入,逻辑还存在一些问题,没有想到好的方法

相关文章
相关标签/搜索