• 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)
    如果我失败了,至少我尝试过,不会因为痛失机会而后悔
  • 相关阅读:
    防火墙firewall的设置和查看
    检测 nginx.conf 是否配置正确
    docker 查看容器挂载的目录
    docker 报错 Error response from daemon: driver failed programming external connectivity on endpoint mynginx
    vue 更新了vue-cli到最新版本后引发的问题: require和import、vue-loader的问题
    css 用 display: inline-block; 代替 float
    .net利用SQLBulkCopy进行数据库之间的大批量数据传递
    Datatable.Select()用法简介
    C# Enum,Int,String的互相转换
    Sql 列转行 三种方法对比
  • 原文地址:https://www.cnblogs.com/tangcode/p/11132414.html
Copyright © 2020-2023  润新知