介绍
今天就跟大家聊聊有关利用Python怎么实现一个带参数的用户验证功能的装饰器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
具体如下:
user_list =, ( {才能& # 39;名字# 39;:,& # 39;sb1& # 39;,, & # 39;密码# 39;:,& # 39;123 & # 39;}, {才能& # 39;名字# 39;:,& # 39;sb2& # 39;,, & # 39;密码# 39;:,& # 39;123 & # 39;}, {才能& # 39;名字# 39;:,& # 39;sb3& # 39;,, & # 39;密码# 39;:,& # 39;123 & # 39;}, {才能& # 39;名字# 39;:,& # 39;sb4& # 39;,, & # 39;密码# 39;:,& # 39;123 & # 39;} ] #,初始状态,用来保存登陆的用户, client_dic =,{& # 39;用户名# 39;,,没有,,& # 39;登录# 39;:,假} #,添加新功能 def 身份验证(auth_type=& # 39; filedb& # 39;): def 才能auth_func(函数): ,,,def 包装器(* args,, * * kwargs): ,,,,,印刷(auth_type) ,,,,,if auth_type ==, & # 39; fildb& # 39;: ,,,,,#,参数检查,判断是否有用户登录,如果有,不用验证,直接执行函数的功能 ,,,,,,,if client_dic[& # 39;用户名# 39;],以及client_dic[& # 39;登录# 39;): ,,,,,,,,,res =, func (* args,, * * kwargs) ,,,,,,,,,return res ,,,,,,,#,输入用户名和密码 ,,,,,,,username =,输入(& # 39;用户名:& # 39;).strip () ,,,,,,,passwd =,输入(& # 39;passwd: & # 39;) .strip () ,,,,,,,#,对比列表,检查用户名和密码是否正确 ,,,,,,,for user_dic 拷贝user_list: ,,,,,,,,,if username ==, user_dic[& # 39;名字# 39;],以及passwd ==, user_dic[& # 39;密码# 39;): ,,,,,,,,,,,client_dic[& # 39;用户名# 39;],=,user_dic[& # 39;名字# 39;】 ,,,,,,,,,,,client_dic[& # 39;登录# 39;],=,真的 ,,,,,,,,,,,res =, func (* args,, * * kwargs) ,,,,,,,,,,,return res ,,,,,,,其他的: ,,,,,,,,,印刷(& # 39;用户名或者密码错误! & # 39;) ,,,,,elif auth_type ==, & # 39;通过# 39;: ,,,,,,,印刷(& # 39;不知道什么验证方式& # 39;) ,,,,,,,res =, func (* args,, * * kwargs) ,,,,,,,return res ,,,,,其他的: ,,,,,,,印刷(& # 39;一脸蒙蔽的验证方式& # 39;) ,,,,,,,res =, func (* args,, * * kwargs) ,,,,,,,return res ,,,return 包装 return auth_func才能 @auth (auth_type=& # 39; filedb& # 39;) def 指数(): 打印才能(“欢迎来到主页“) @auth (auth_type=& # 39;用户# 39;) def 家居(名称): 打印才能(“欢迎回家:% s", %,名称) @auth (auth_type=& # 39;通过# 39;) def shoppping_car (): 打印才能(& # 39;购物车里有[% s, % s % s] & # 39;, %,(& # 39;奶茶& # 39;,,& # 39;妹妹& # 39;,,& # 39;娃娃& # 39;)) 打印(client_dic) index () 打印(client_dic) 回家(& # 39;根# 39;)