本文实例讲述了Python实现带参数的用户验证功能装饰器。分享给大家供大家参考,具体如下:
user_list = [
{\'name\': \'sb1\', \'passwd\': \'123\'},
{\'name\': \'sb2\', \'passwd\': \'123\'},
{\'name\': \'sb3\', \'passwd\': \'123\'},
{\'name\': \'sb4\', \'passwd\': \'123\'}
]
# 初始状态,用来保存登陆的用户,
client_dic = {\'username\': None, \'login\': False}
# 添加新功能
def auth(auth_type=\'filedb\'):
def auth_func(func):
def wrapper(*args, **kwargs):
print(auth_type)
if auth_type == \'fildb\':
# 参数检查,判断是否有用户登录,如果有,不用验证,直接执行函数的功能
if client_dic[\'username\'] and client_dic[\'login\']:
res = func(*args, **kwargs)
return res
# 输入用户名和密码
username = input(\'用户名:\').strip()
passwd = input(\'passwd:\').strip()
# 对比列表,检查用户名和密码是否正确
for user_dic in user_list:
if username == user_dic[\'name\'] and passwd == user_dic[\'passwd\']:
client_dic[\'username\'] = user_dic[\'name\']
client_dic[\'login\'] = True
res = func(*args, **kwargs)
return res
else:
print(\'用户名或者密码错误!\')
elif auth_type == \'pass\':
print(\'不知道什么验证方式\')
res = func(*args, **kwargs)
return res
else:
print(\'一脸蒙蔽的验证方式\')
res = func(*args, **kwargs)
return res
return wrapper
return auth_func
@auth(auth_type=\'filedb\')
def index():
print(\"欢迎来到主页\")
@auth(auth_type=\'user\')
def home(name):
print(\"欢迎回家:%s\" % name)
@auth(auth_type=\'pass\')
def shoppping_car():
print(\'购物车里有[%s,%s,%s]\' % (\'奶茶\', \'妹妹\', \'娃娃\'))
print(client_dic)
index()
print(client_dic)
home(\'root\')
运行结果:
{\'username\': None, \'login\': False}
filedb
一脸蒙蔽的验证方式
欢迎来到主页
{\'username\': None, \'login\': False}
user
一脸蒙蔽的验证方式
欢迎回家:root
更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
继续阅读与本文标签相同的文章
-
2pc 3pc 详述
2026-05-19栏目: 教程
-
云产品权限细粒度设置
2026-05-19栏目: 教程
-
一起聊聊图像质量和美学评估的数据集
2026-05-19栏目: 教程
-
源码分析Node的Cluster模块
2026-05-19栏目: 教程
-
Maven使用经验总结(持续更新)
2026-05-19栏目: 教程
