浅谈Python学习的第一个小程序,用户登陆接口的开发
代码已实现功能:
1、用户登陆平台需要验证用户名和密码信息是否正确
2、允许用户尝试登陆三次,三次后强制退出登陆端。
3、同一账户连续登陆三次失败写入黑名单。管理员手动解黑后可正常登陆。
待实现功能:
1、实现黑名单用户30分钟自动解黑
2、调用DB用户数据,当前使用的文本列表
3、实现用户登陆验证码功能
4、暂时就想到这些没实现的功能,以后再补充,hehe
编写逻辑:
1、读取用户列表和黑名单列表
2、临时用户变量,记录用户登陆的临时元组
3、设置用户可登陆尝试次数
4、判断用户传参(用户名)是否存在于用户列表中,存在执行下一步判断
5、判断用户传参(用户名和密码)是否匹配,匹配一致登陆成功
6、判断用户传参(用户名和密码)是否匹配,匹配不一致,用户重新输入(限制3次,记录用户名到临时用户变量),使用不同用户尝试超过3次退出
7、判断用户传参(用户名和密码)是否匹配,匹配一致登陆成功
8、判断用户传参(用户名和密码)是否匹配,匹配不一致,并且同一用户尝试3次,将用户写入黑名单,退出程序
9、人工删除黑名单中的账号后,账号恢复正常
账号信息和黑名单格式
代码分享:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Author:Jor Babe
import getpass,random,time,datetime
# user name list
file_object = open("user_list.txt")
userlist = file_object.read()
userses = userlist.split("\\n")
# locked user name list
file_error = open("user_error.txt")
usererror = file_error.read()
usernames = []
count = 0
countb = 0
while count < 3 and countb < 3:
username = input("username:")
password = getpass.getpass("password:")
# password checkout
userpasseord = username
userpasseord += password
userpacode = userses.count(userpasseord)
# username checkout
numb = userlist.count(username)
numer = usererror.count(username)
usernames.append(username)
numername = usernames.count(username)
if numb == 0 or numer == 1:
print("Incorrect or locked user name!")
elif numb == 1 and userpacode == 1:
print("Welcome user {name} login ...".format(name=username))
break # login = input(input(username))
elif numb == 1 and userpacode != 1:
if numername == 3:
# blacklist
otherStyleTime = (datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")
f = open(‘user_error.txt‘, ‘a‘)
f.write(str(otherStyleTime))
f.write(‘\\t‘)
f.write(str(username))
f.write(‘\\n‘)
f.close()
print("The user logged in failed to lock the account three times!")
else:
print("Invalid current password!")
countb += 1
else:
print("Invalid username or password!")
count += 1
print("You have tried to log in too many times, please relogin to the client.")