zoukankan      html  css  js  c++  java
  • python-验证功能的装饰器示例

    user_list=[
        {'name':"alex","pwd":'123'},
        {'name':'tang','pwd':'123'},
        {'name':'sb','pwd':'123'}
    ]
    current_dict={'username':None,'login':False}
    def auth(auth_type):
        def auth_func(func):
            def wrapper(*args,**kwargs):
                print("认证类型", auth_type)
    
                if auth_type == 'filedb':
    
                    if current_dict['username'] and current_dict['login']:#判断用户的登陆状态
                        res = func(*args, **kwargs)
                        return res
                    username=input("用户名").strip()#strip()函数去除字符串两边的空格
                    password=input('密码').strip()
    
                    for item in user_list:
                        if  username==item['name'] and password==item['pwd']:
                            current_dict['username']=username#改变用户的登陆状态,改变后就不需要每次都进行输入
                            current_dict['login']=True
                            res=func(*args,**kwargs)
                            return res
                        else:
                            print("用户名或密码错误")
                elif auth_type=="ldap":
                    print("hahhaha")
    
            return wrapper
    
        return auth_func
    
    
    
    
    
    @auth(auth_type="filedb")#auth_func=auth(auth_type="filedb")--->@auth_func 附加了一个auth_type---->index=auth_func(index)
    def index():
        print("欢迎来到京东")
    
    @auth(auth_type='')
    def home(name):
        print("我的个人中心%s"%(name))
    
    @auth(auth_type='filedb')
    def shop_car(name):
        print("%s我的购物车"%(name))
    
    print("after---->",current_dict)
    index()
    print('after---->',current_dict)
    home("alex")
    shop_car("产品经理")
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    # dict_user={"username":None,"login":False}
    #
    # def auth_func(func):
    #     def wrapper(*args,**kwargs):
    #         if dict_user['username'] and dict_user['login']:
    #             res = func(*args, **kwargs)
    #             return res
    #         username=input("用户名").strip()#strip()函数去除字符串两边的空格
    #         password=input('密码').strip()
    #         if username=="sb" and password=="123":
    #             dict_user['username']=username
    #             dict_user['login']=True
    #             res=func(*args,**kwargs)
    #             return res
    #         else:
    #              print("用户名或密码错误")
    #
    #     return wrapper
    #
    #
    #
    #
    #
    #
    # @auth_func
    # def index():
    #     print("欢迎来到京东")
    #
    # @auth_func
    # def home(name):
    #     print("我的个人中心%s"%(name))
    #
    # @auth_func
    # def shop_car(name):
    #     print("%s我的购物车"%(name))
    #
    # index()
    # home("alex")
    # shop_car("产品经理")
    #
    #
    
    
    
    
    
    
    
    
    
    # a="123"
    # b='1'
    # v=b.join(a)##b join a
    # print(v)
    如果我失败了,至少我尝试过,不会因为痛失机会而后悔
  • 相关阅读:
    通讯录封装实现
    简单通讯录的实现 main..h .m文件全部
    iOS 开发 OC编程 字典和集合 排序方法
    iOS 开发 OC编程 数组冒泡排序.图书管理
    iOS 开发 OC编程 属性和字符串练习
    iOS 开发 OC编程 属性和字符串
    iOS 开发 OC编程 便利构造器以及初始化方法
    iOS 开发 OC编程 方法的书写
    IOS 开发 OC编程 类和对象
    iOS 开发 c语言阶段考试题
  • 原文地址:https://www.cnblogs.com/tangcode/p/11132414.html
Copyright © 2011-2022 走看看