有参函数(认证功能)

#基于文件或者其他来源的认证方式:
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')

转载于:https://www.cnblogs.com/fxc-520520/p/9174152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值