• python装饰器实现用户密码认证(简单初形)


    import time
    current_user={'user':None}
    def auth(engine = 'file'):
    def deco(func): #func=最初始的index和最初始的home
    def wrapper(*args,**kwargs):
    if current_user['user']:
    #如果成立说明current_user里面已经有用户信息,说明用户已经登录过,满足条件
    #即会执行调用index home函数
    res = func(*args, **kwargs) #调用最原始的index 同样也调用最原始的home,
    return res

    user=input('输入你的用户名:').strip()
    pwd=input('输入你的密码:').strip()
    if engine == 'file':
    #基于文件的认证
    if user == 'yangzhizong' and pwd == '123':
    print('认证成功')
    #记录用户登录状态
    current_user['user']=user
    res = func(*args, **kwargs)
    return res
    else:
    print('用户名密码错误')

    elif engine == 'mysql':
    print('基于mysql的认证')
    elif engine == 'idap':
    print('基于idap的认证')
    else:
    print('无法识别认证来源')

    return wrapper
    return deco


    # @timmer 2层是 3层此时可以理解为:@auth(engine = 'file')
    #可以理解为上面这种情况
    # x=auth(engine='file')
    # @x
    @auth(engine='file') #拿到了deco的返回值,最后调用index加(),输出结果 #deco #index=deco(index) #index=wrapper
    def index():
    time.sleep(1)
    print('welcome to index page')

    @auth(engine='file')
    def home(name):
    print('welcome %s to home page'%name )
    time.sleep(0.5)

    index()
    home('yangzhizong')
  • 相关阅读:
    %
    【收藏】Javascript调用后台代码的方法
    C++Builder2010中配置OpenCV2.2
    【收藏】Visual studio 2008 && 2010 快捷键大全
    队列的练习
    哈希表
    poj 3750 链表
    C/C++内存存储 mark在此
    二叉树,深搜,广搜
    链表的练习
  • 原文地址:https://www.cnblogs.com/yangzhizong/p/9172965.html
Copyright © 2020-2023  润新知