码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-12 16:14:14      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:else   pytho   实现   auth   ==   inpu   page   def   ida   

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‘)

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

标签:else   pytho   实现   auth   ==   inpu   page   def   ida   

原文地址:https://www.cnblogs.com/yangzhizong/p/9172965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!