连续三次登陆失败锁定账户(代码片段)

davie_2020 davie_2020     2022-10-27     713

关键词:

连续三次登录失败锁定账户

需求说明:
1、输入用户名
2、认证成功,提示登录成功,欢迎信息
3、登录失败连续三次,提示失败,并退出程序

备注:
1、users_info是存放用户名及其密码的文件,格式: 用户名 密码, 之间用空格隔开
2、locked_file是存放被锁定的用户id的文件,默认为空,格式为: 用户名
3、程序会对users_info里的合法用户id进行判断,若连续三次输入错误,提示失败并退出
4、程序会对正确的用户名后的密码进行验证,输入三次密码错误,锁定该用户名,并退出

思路导图:

 



一、代码如下
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Author: davie
# file three_login.py
"""
需求说明:
1、输入用户名
2、认证成功,提示登录成功,欢迎信息
3、登录失败连续三次,提示失败,并退出程序

备注:
1、users_info是存放用户名及其密码的文件,格式: 用户名 密码, 之间用空格隔开
2、locked_file是存放被锁定的用户id的文件,默认为空,格式为: 用户名
3、程序会对users_info里的合法用户id进行判断,若连续三次输入错误,提示失败并退出
4、程序会对正确的用户名后的密码进行验证,输入三次密码错误,锁定该用户名,并退出
"""
import os,sys,getpass   # 导入os,sys,getpass 模块
os.system(\'clear\')      # 清屏操作
count = 0               # 用户输入循环次数
while count < 3:        # 只要用户登录失败不超过3次,就就行循环执行
    username = input("请输入您的用户名: ").strip()   # 输入用户名
    # 打开locked_file文件,权限是读写,并赋值给locked_f变量
    locked_f = open(\'locked_file\',mode=\'r+\',encoding=\'utf-8\')
    # 使用.readlines()的方法逐行读取locked_file文件,并赋值给locked_list变量
    locked_list = locked_f.readlines()

    # 使用for循环读取locked_file的内容
    for locked_line in locked_list:
        # 使用.strip()的方法去掉换行符
        locked_line = locked_line.strip(\'\\n\')
        # 判断用户输入的信息是否在locked_file中存在
        if username == locked_line:
            print("用户:\\033[31m%s\\033[0m 已经锁定,请联系您的管理员" % username) # 如果存在则打印
            sys.exit(1) # sys模块的exit()方法表示退出
    with open("users_info",mode="r",encoding="utf-8") as user_f: # 只读模式打开文件
        user_list = user_f.readlines()  # 使用.readlines()方法逐行读取,赋值给变量
        
    for user_line in user_list: # 使用for循环读取users_info的内容
        (user,passwd) = user_line.strip(\'\\n\').split()   # 分别获取账号和密码信息
        if username == user:    # 使用if判断用户输入的账号是否在users_info中存在
            p_count = 0               # 输入密码的循环次数
            while p_count <3:         # 循环不超过三次
                password = getpass.getpass("请输入密码: ")  # 使用getpass方法,密码不显示
                if password == passwd:  # 用户名和密码都正确
                    print("\\033[36m欢迎您,登陆成功!\\033[0m")
                    sys.exit(0)
                else:
                    if p_count != 2:  # p=2时,是最后一次机会
                        print("对不起,\\033[31m%s\\033[0m的密码错误,请继续输入,你还有\\033[31m%d\\033[0m次机会"%(username,2-p_count))
                p_count += 1
        else:
            pass    # 用户匹配失败,跳过并继续循环
    else:
        locked_f.write(username + \'\\n\')
        sys.exit("对不起 \\033[31m%s 用户已经被锁定,请联系管理员\\033[0m"% username)
    u += 1
else:
    sys.exit("\\033[31输入有误,程序退出,请重新输入!\\033[0m")
locked_f.close()      # 关闭文件
View Code

  二、运行结果

[davie@webserver ~]$ ll
total 8
-rw-rw-r-- 1 davie davie    0 Mar 23 20:54 locked_file
-rw-rw-r-- 1 davie davie 3312 Mar 23 20:53 three_login.py
-rw-rw-r-- 1 davie davie   30 Mar 23 20:24 users_info
[davie@webserver ~]$ cat users_info 
u1 123456
u4 123456
u5 123456
[davie@webserver ~]$ python3 three_login.py 
请输入您的用户名: u1
请输入密码: 
对不起,u1的密码错误,请继续输入,你还有2次机会
请输入密码: 
对不起,u1的密码错误,请继续输入,你还有1次机会
请输入密码: 
对不起 u1 用户已经被锁定,请联系管理员
[davie@webserver ~]$ 
[davie@webserver ~]$ cat locked_file 
u1
[davie@webserver ~]$ 
[davie@webserver ~]$ python3 three_login.py 
请输入您的用户名: u2
对不起 u2 用户已经被锁定,请联系管理员
[davie@webserver ~]$ ll
total 12
-rw-rw-r-- 1 davie davie    6 Mar 23 21:42 locked_file
-rw-rw-r-- 1 davie davie 3312 Mar 23 20:53 three_login.py
-rw-rw-r-- 1 davie davie   30 Mar 23 20:24 users_info
[davie@webserver ~]$ cat locked_file 
u1
u2
[davie@webserver ~]$ python3 three_login.py 
请输入您的用户名: u3
对不起 u3 用户已经被锁定,请联系管理员
[davie@webserver ~]$ python3 three_login.py 
请输入您的用户名: u4
请输入密码: 
欢迎您,登陆成功!
[davie@webserver ~]$ 
View Code

 



day5.对文件的增删改查+三次登陆后锁定

作业1:对文件haproxy.conf进行增删改查:haproxy.conf原文件内容如下:globallog127.0.0.1local2daemonmaxconn256log127.0.0.1local2infodefaultslogglobalmodehttptimeoutconnect5000mstimeoutclient50000mstimeoutserver50000msoptiond 查看详情

python用户登录三次锁定(代码片段)

...确可成功登录的用户名和密码;  2、用户黑名单,三次登录失败后,将用户名写入黑名单;  3、检测黑名单的内容,如果与当前登录名一致,则不允许继续输入密码,直接提示用户已锁定。代码实现:1#-*-coding:utf-8-*-23#登... 查看详情

实现三次登录(代码片段)

三次登录写一个函数完成三次登录,三次不成功则登录失败,失败返回False,登陆成功返回True用户的用户名和密码存储在文件中,该文件包含多个用户名以及对应的密码,形式为:name|password,每个人占用文件的一行实现代码:defl... 查看详情

用户三次登录锁定

需求    编写登陆接口    让用户输入用户名密码    认证成功后显示欢迎信息    输错三次后退出程序    可以支持多个用户登录    用户3次... 查看详情

练习1(代码片段)

写一个函数完成三次登陆功能:用户的用户名密码从一个文件register中取出。register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。完成三次验证,三次验证不成功则登录失败,登录失... 查看详情

函数练习完成三次登录

#写一个函数完成三次登陆功能:#用户的用户名密码从一个文件register中取出。#register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。#完成三次验证,三次验证不成功则登录失败,登录... 查看详情

对文件的增删改查以及---三次登陆

文件globallog127.0.0.1local2daemonmaxconn256log127.0.0.1local2infodefaultslogglobalmodehttptimeoutconnect5000mstimeoutclient50000mstimeoutserver50000msoptiondontlognulllistenstats:8888statsenablestatsur 查看详情

asp.net30分钟内5次登陆错误,锁定账号。

...果你需要的效果是,针对一个客户端(浏览器),超过五次登录错误,就禁止该客户端登录,就应该使用cookie,风险在于cookies是可以用户手动删除的而Session端的控件,是不用担心用户清除cookies的,而是担心用户切换浏览器,注... 查看详情

写一个函数完成三次登陆功能,再写一个函数完成注册功能

defregister():while1:username=input(‘输入用户名:‘)passwd=input(‘输入密码:‘)withopen(‘homework/a.txt‘,‘r+‘,encoding=‘utf-8‘)asf:foriteminf:ifusername==item.split(" ")[0]:print("用户名存在,请重新输入")breakelse:f.write(u 查看详情

账号锁定功能(代码片段)

...edis数据库实现账户锁定需求–>用户输入密码错误,连续错误三次以上,封锁账号在设定时间内不能再登录,直至封锁时间结束后用户才能再登录。首先我们用到redis中的lpush–expire–ttl–llen其方法1234567891011121314151... 查看详情

springsecurity---多次登录失败账户锁定详解(代码片段)

SpringSecurity---多次登录失败账户锁定需求知识回顾MyUserDetails修改实现多次登录失败锁定的原理具体实现重置数据库锁定状态的时机需求在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候ÿ... 查看详情

福建省练习题(代码片段)

...位账户锁定计数器为1分钟之后。(windows)一分钟内仅允许5次登录失败的尝试,超过5次登录帐号锁定5分钟。(linux)cd/etc/pam.dvimcommon-auth#注意后面时间的单位是秒 3.用户安全管理(Windows)在组策略中只允许管理员账号从网络访问本... 查看详情

函数练习完成三次登录

#写一个函数完成三次登陆功能:#用户的用户名密码从一个文件register中取出。#register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。#完成三次验证,三次验证不成功则登录失败,登录... 查看详情

我的xp系统台式机新建了个用户每次登陆时要选择用户登录,能否设一个默认账户自动登陆????

这个是无法设置的这个电脑是你一个人用的吧如果是这样的话就删除一个账户就行了在“我的电脑”右旁文件夹选项中选择“控制面板”中的用户账户中进行删除就可以了参考技术AYoucanuseRegistryEditortoaddyourlogoninformation.Todothis,foll... 查看详情

3次登录锁定

flag=Truewhileflag:user=input(‘pleaseinputyourusername:‘)locked=open(‘locked‘,‘r+‘,encoding=‘utf8‘)forline1inlocked:ifuser.strip()!=line1:f=open(‘账户信息‘,encoding=‘utf8‘)forlineinf:list=line.split(‘---‘ 查看详情

linux系统设置登录失败n次锁定账户:vim/etc/pam.d/system-auth(代码片段)

authrequiredpam_env.so登陆后的环境变量authsufficientpam_fprintd.so指纹认证authsufficientpam_unix.sonulloktry_first_pass验证用户密码有效性authrequisitepam_succeed_if.soauthrequiredpam_deny.soauthrequiredpam_tally2.sodeny=3 查看详情

old.2.三次登录机会(代码片段)

分析:用户输入密码,对则输出成功登录;不对则让i的值增加1,并且再次输入密码;当i==3时,输出你已经尝试3次,请休息一会儿。方案:1#!/usr/bin/envpython2#-*-coding:utf-8-*-3i=04print("Welcomeback!")5whileTrue:6num=raw_input("Enteryourpassword:")7i... 查看详情

通过sccmsql生成计算机上一次登录用户账户报告(代码片段)

...据库获取计算机硬件报告‎今天介绍通过SCCMSQL生成上一次登录用户、主要用户的相干报告。前提条件如果需要SCCM中的主要用户信息(PrimaryUser)‎‎,则必须从ConfigMgr控制台启用‎‎用户发现‎‎。如果需要SCCM中计算机系统上次... 查看详情