zoukankan      html  css  js  c++  java
  • 有参函数(认证功能)

    #基于文件或者其他来源的认证方式:
    import time
    user={'username':None}
    def auth(engine):
    def deco(func):
    def wrapper(*args,**kwargs):
    if user['username']:

    print('已经登陆过了')
    res = func(*args, **kwargs)
    return res
    uname=input('uname:').strip()
    pwd=input('pwd:').strip()
    if engine=='file':
    if uname=='egon' and pwd=='123':
    print('login successful')
    user['user']=uname
    res=func(*args,**kwargs)
    return res
    elif engine=='mysql':
    print('基于mysql的认证')
    elif engine=='ldap':
    print('基于ldap的认证')
    else:
    print('无法识别认证来源')
    return wrapper
    return deco
    @auth(engine='mysql')
    def index():
    print('welcome to index page')
    time.sleep(1)
    index()



    只有认证功能装饰器
    #此题逻辑:
    当要调用一个登陆界面即函数的时候,例如,index(),如果没登陆过,就让输入用户名,密码进行交互登陆,登陆成功后,把成功登陆一次的状态记录下来,就调用我们需要调用的函数。即index(),
    每次登陆前,先判断字典里有无用户进来,如果登陆过的话,直接调用函数,例如index.
    import time

    current_user={'user':None}

    def deco(func):
    def wrapper(*args,**kwargs):
    if current_user['user']:
    #已经登陆过
    res = func(*args, **kwargs)
    return res
    user=input('username>>: ').strip()
    pwd=input('password>>: ').strip()
    if user == 'egon' and pwd == '123':
    print('login successful')
    # 记录用户登陆状态
    current_user['user']=user
    res=func(*args,**kwargs)
    return res
    else:
    print('user or password error')
    return wrapper

    @deco
    def index():
    print('welcome to index page')
    time.sleep(1)

    @deco
    def home(name):
    print('welecome %s to home page' %name)
    time.sleep(0.5)


    index()
    home('egon')
  • 相关阅读:
    pycharm快捷键
    Java线程的生命周期
    Java中的管程
    Java并发编程之入门
    Linux系统监控命令
    RT-Thread 搜集一些其他博主的博客以备学习
    late_initcall 替换 module_init
    去掉行尾的^M
    ST3 C程序自动补全
    MinGW-W64 编译 LLVM 与 Clang
  • 原文地址:https://www.cnblogs.com/fxc-520520/p/9174152.html
Copyright © 2011-2022 走看看