网络编程
位置:首页>> 网络编程>> Python编程>> Python实现带参数的用户验证功能装饰器示例

Python实现带参数的用户验证功能装饰器示例

作者:我是马克思小清新  发布时间:2023-05-15 01:34:05 

标签:Python,装饰器

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/qq_33531400/article/details/79324747

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com