博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写登陆接口
阅读量:7256 次
发布时间:2019-06-29

本文共 6383 字,大约阅读时间需要 21 分钟。

                  用任意一种语言实现登陆接口

                                      作者:尹正杰

版权声明:

  本篇博客仅仅用于交流学习使用,对一些小功能的实现,来练习对代码的熟练度。同时,本篇博客允许转载,用于互相交流学习,转载必须在博客声明原链接!

 

 

练习一:

功能需求:

      1>.输入用户名密码;

      2>.认证成功后显示欢迎信息;

      3>.输错三次后锁定;

 

1 yinzhengjie
lock.info内容戳这里
1 yinzhengjie 123 2 bingan  123 3 mazhixing   123 4 xulei   123 5 baoge   123 6 xiaoran 123 7 wuchuanfang 123 8 luojiyin    123 9 songjiang   12310 wangsheng   12311 wangzhiqiang    12312 chenchao    12313 chenkun     12314 zhaoyuanhai 12315 xuezhaomeng 12316 zhenyansheng    12317 fangheyi    12318 wudonghang  123
student.info内容戳这里

golang代码实现效果如下:

1 /*  2 #!/usr/bin/env gorun  3 @author :yinzhengjie  4 Blog:http://www.cnblogs.com/yinzhengjie  5 EMAIL:y1053419035@qq.com  6 */  7   8 package main  9  10 import ( 11     "fmt" 12     "bufio" 13     "os" 14     "strings" 15     "log" 16     "io" 17 ) 18  19 var   ( 20     user string 21     passwd string 22     line string 23     filepath string 24     lockpath string 25     retry int 26     user_locked bool = false 27     user_presence bool  = false 28     validation_success bool = false 29 ) 30  31 func GetLoginInfo() (user,passwd string) { 32     f := bufio.NewReader(os.Stdin) 33     for  { 34         fmt.Print("请输入用户名:") 35         line,_ = f.ReadString('\n') 36         if len(line) == 1 { 37             continue 38         } 39         line = strings.TrimSpace(line) 40         fmt.Sscan(line,&user) 41         fmt.Print("请输入密  码:") 42         line,_ = f.ReadString('\n') 43         if len(line) == 1 { 44             continue 45         } 46         line = strings.TrimSpace(line) 47         fmt.Sscan(line,&passwd) 48         //fmt.Printf("用户名是:%s,密码是%s\n",user,passwd) 49         return user,passwd 50     } 51 } 52  53 func GetFileInfo(filepath string)(res []string){ 54     var fileds []string 55     f,err := os.Open(filepath) 56     defer f.Close() 57     if err != nil { 58         log.Fatal(err) 59     } 60     r := bufio.NewReader(f) 61     for  { 62         line,err := r.ReadString('\n') 63         if err == io.EOF { 64             break 65         } 66         line = strings.TrimSpace(line) 67         fileds = append(fileds, line) 68         //fmt.Println(line) 69     } 70     return fileds 71 } 72  73 func UserCounts(user string) map[string]int { 74     var res map[string]int 75     res = make(map[string]int) 76     res[user] = retry + 1 77     return res 78 } 79  80 func main() { 81     var res map[string]int 82     lockpath = "E:\\Code\\Golang\\Golang环境\\yinzhengjie\\Golang作业\\Day1\\lock.info" 83     filepath = "E:\\Code\\Golang\\Golang环境\\yinzhengjie\\Golang作业\\Day1\\student.info" 84     user,passwd = GetLoginInfo() 85     res = UserCounts(user) 86     for  { 87         lock_res := GetFileInfo(lockpath) 88         for _,member := range lock_res{   //判断用户是否被锁! 89             if user == member{ 90                 user_locked = true 91             } 92         } 93         if user_locked == true { 94             fmt.Println("该用户已经被锁定!") 95             break 96         } 97  98         login_res := GetFileInfo(filepath)  //验证用户密码是否正确 99         for _,v := range login_res{100             if user == strings.Fields(v)[0] {101                 user_presence = true102                 if passwd == strings.Fields(v)[1] {103                     validation_success = true104                     break105                 }106             }107         }108         if user_presence == true  && validation_success == true{109             fmt.Println("恭喜你,登陆成功哟!")110             break111         }112         if user_presence == true && validation_success == false{113             res[user] += 1114             fmt.Println("用户名或密码错误!")115             user,passwd = GetLoginInfo()116             if res[user] > 2 {117                 fmt.Printf("重试次数上限!该用户`%v`已被锁定\n",user)118                 break119             }120         }121         if user_presence == false && validation_success == false {122             fmt.Println("输入的用户不存在!")123             user,passwd = GetLoginInfo()124         }125     }126 }

python代码实现效果如下:

1 yinzhengjie|123|32 yzj|666|2
UserAuthenticationFile.txt 文件内容戳这里
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6  7 f1 = open('UserAuthenticationFile.txt','r')            #以只读的方式打开文件 8 data = f1.read()                                        #读取文件的内容 9 f1.close()                                              #关闭文件句柄10 11 user_info_list = []12 user_str_list = data.split('\n')                        #按照换行符将读取出来的数据进行第一次切割13 for item in user_str_list:14     temp = item.split('|')                              #将第一次切割后的每个元素再次进行切割15     info = {16         'name' : temp[0].strip(),                           #将切割后的每一个元素分别赋值17         'passwd': temp[1].strip(),18         'retry':temp[2].strip()19     }20     user_info_list.append(info)21 22 VerifySuccess = False                                 #用于判断是否验证成功的标志位,默认为false。23 UserLocked = False                                    #用于判断用户是否被锁定,默认为false。24 retry = 1                                              #定义用户尝试登陆的次数。25 26 while retry < 4:                                       #用来确定循环次数27     username = input("请输入您的用户名>>>")28     password = input("请输入您的密  码>>>")29     for user_info in user_info_list:30         if  username == user_info["name"] and password == user_info["passwd"]:31           if int(user_info["retry"]) < 3:32               print("登陆成功!")33               VerifySuccess = True                    #我这里定义了一个标志位,当验证登陆成功后,将flag的值改为Ture并终止当前的for循环。34               user_info["retry"] = 0                  #验证登陆成功之后,需要把尝试登陆成次数清空。35               break36           else:37               print("您的账户已经被冻结,请联系管理员解封!")38               UserLocked = True39               break40     if  VerifySuccess == True:41         break42     elif UserLocked == True:43         UserLocked == False44         retry += 145         continue46     else:47         print("用户名或密码错误!")48         retry += 149 50 print(user_info_list)51 f2 = open('UserAuthenticationFile.txt',"w")               #这种方式是以清空的方式打开。52 for i in user_info_list:53     f2.write(i["name"]+"|"+i["passwd"]+"|"+str(i["retry"]))54     f2.write("\n")55 f2.close()

shell代码实现效果如下:

 

 

 

c++代码实现效果如下:

 

 

JAVA代码实现效果如下:

 

 

JS代码实现效果如下:

 

PHP代码实现效果如下:

 

你可能感兴趣的文章
ACTION_CANCEL事件和事件回传
查看>>
java数据库查询类
查看>>
"河北科技创新平台年报系统"课堂讨论
查看>>
这半年的一些事情
查看>>
[30期] 我对人生道路的总结
查看>>
基于ARM处理器的反汇编器软件简单设计及实现
查看>>
巨杉数据库助力民生银行、恒丰银行云化架构升级
查看>>
超好用的VueJs调试工具——vue-devtools
查看>>
对象键
查看>>
[LeetCode] Unique Binary Search Trees, Solution
查看>>
[AtCoder2558]Many Moves
查看>>
【数据库_Mysql】JAVA-数据库Date格式在前台JSP页面的获取
查看>>
程序员的职业发展 (转)
查看>>
mysql中Time Date DateTime TimeStaamp区别
查看>>
STM32是如何进入中断服务函数xxx_IRQHandler的
查看>>
JFinal极速开发框架使用笔记
查看>>
基于jQuery,使用sina ip api,实现异步ip查询
查看>>
业余的工作
查看>>
第一篇博客,希望能坚持下去
查看>>
开发者必知:提升Android应用开发性能的十大要点
查看>>