码迷,mamicode.com
首页 > 编程语言 > 详细

Python 模拟系统登陆接口

时间:2016-01-08 11:47:31      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:用户名   接口   password   import   please   

Python 模拟登陆-验证用户名和密码

    1. 如果输入错误,则输出用户名或密码错误;

    2. 如果成功,则输出欢迎,xxx!

    3. 三分钟内累计错误三次默认用户被锁, 三分钟后自动解锁继续验证。


简单代码如下:


import getpass

import datetime

user_pwd_dict = {}

user_login_sum_dict = {}

with open(‘user_pwd‘, ‘r‘) as  obj:  # 读取用户名密码文件(文件格式在本文底);

    while True:  # 无限循环,当输入用户名和密码均正确方可退出循环;

        name = input("\nplease input your username:")

        pwd = getpass._raw_input("please input your password:")

        for line in obj:  # 遍历文件读出用户名和密码,生成 user_pwd_dict 列表;

            new_line = line.strip(‘\n‘)

            line_list = new_line.split(‘ ‘)

            user_pwd_dict[line_list[0]] = line_list[1]

        if name in user_pwd_dict.keys():  # 1.1  判断用户名,如果用户名存在执行以下

            if pwd == user_pwd_dict[name]:     # 2.1  判断密码且密码正确

                if name in user_login_sum_dict.keys() and 

                   user_login_sum_dict.get(name)[0]==1:

                                # 3.1 判断用户输错次数,如果是3次,提示被锁

                    end_time=datetime.datetime.now()

                    dif_time = (end_time-start_time).seconds

                    if dif_time < 180: # 4.1 判断被锁时间间隔,如果不超过3分钟

                        (180s)则提示被锁(为方便测试可将时间缩短)

                        print(‘该用户 %s 超过允许次数3次被锁,请稍后重试‘ % name)

                    else:            # 4.2 如果超过3分钟(180s)则提示登录成功并退出程序

                        print(‘\n   welcome %s‘ % name)

                        break

                else:           # 3.2 如果密码正确且未被锁定则提示登录成功并退出程序

                    print(‘\n   welcome %s‘ % name)

                    break

            else:                              # 2.2 密码错误执行以下

                if  name in user_login_sum_dict.keys(): # 5.1 判断用户名是否在被锁字典中

                    if user_login_sum_dict.get(name)[0]==1: # 6.1 判断用户输错次数,

                        如果是3次执行以下

                        end_time=datetime.datetime.now()

                        dif_time = (end_time-start_time).seconds

                        if dif_time < 180:  # 7.1 输错达3次且不超3分钟(180s)提示被锁,

                        继续循环(为方便测试可将时间缩短)

                            print(‘该用户 %s 超过允许次数3次被锁,请稍后重试‘ % name)

                        else:               # 7.2 输错达3次超过3分钟(180s),

                        提示密码错误并重新赋值,继续循环

                            print(‘\n   password isn`t right‘)

                            start_time = datetime.datetime.now()

                            user_login_sum_dict[name]=[0,start_time]

                            print(user_login_sum_dict[name])

                    else:                           # 6.2 用户输错3次以内,则执行以下

                        end_time=datetime.datetime.now()

                        dif_time = (end_time-start_time).seconds

                        if dif_time < 180:  # 8.1 用户输错3次以内并在3分钟以内,

                        提示密码错误并累计错误次数加1次,继续循环

                            print(‘\n   password isn`t right‘)

                            user_login_sum_dict[name][0]+=1

                        else:              # 8.2 用户输错3次以内并超过3分钟,

                        提示密码错误并重新赋值,继续循环

                            print(‘\n   password isn`t right‘)

                            start_time = datetime.datetime.now()

                            user_login_sum_dict[name]=[0,start_time]

                            print(user_login_sum_dict[name])

                else:                           # 5.2  如果用户名未在被锁字典中则提示

                        密码不对且赋初始值,继续循环

                    print(‘\n   password isn`t right‘)

                    start_time = datetime.datetime.now()

                    user_login_sum_dict[name]=[0,start_time]

                    print(user_login_sum_dict[name])

        else: # 1.2 如果用户名不在字典中则提示用户名不存在,继续循环

    print(‘\n   this username doesn`t exist!‘)


            -----------------------用户名密码文件格式如下------------------------

技术分享







         注:水平有限,本博文如有考虑不到之处还请多多指教共同学习,谢谢。


本文出自 “纷繁中享受技术的简单喜悦” 博客,请务必保留此出处http://51enjoy.blog.51cto.com/8393791/1732774

Python 模拟系统登陆接口

标签:用户名   接口   password   import   please   

原文地址:http://51enjoy.blog.51cto.com/8393791/1732774

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!