装饰器案例1:模拟用户登录(不同方式)
2018-04-18 10:12 今天我要学习 阅读(342) 评论(0) 编辑 收藏 举报#coding=utf-8
#定义装饰器
user,passwd = 'dhy','123'
def auth(auth_type):
def outer(func):
def wapper(*args,**kwargs):
if auth_type == 'local':
uname = raw_input('用户名:').strip()
pwd = raw_input('密码:').strip()
if uname == user and pwd ==passwd:
res =func(*args,**kwargs)
print '---------------after login------------------'
print res
else:
print '\033[31;1m用户名密码错误,强制退出\033[0m'
exit()
elif auth_type == 'ldap':
uname = raw_input('ldap用户名:').strip()
pwd = raw_input('ladp密码:').strip()
if uname == user and pwd == passwd:
func(*args, **kwargs)
else:
print '\033[31;1m用户名密码错误,强制退出\033[0m'
exit()
print '通过ldap方式登录成功!'
return wapper
return outer
#定义三个页面
def index():
print '欢迎进入首页,请进入home页面登录'
@auth(auth_type='local')
def home():
print '恭喜进入home页面!'
return 'from home page!'
@auth(auth_type='ldap')
def bbs():
print '恭喜进入bbs论坛页面!
'#运行
index()
home()
bbs()
==============================
运行结果:
欢迎进入首页,请进入home页面登录
用户名:dhy
密码:123
恭喜进入home页面!
---------------after login------------------
from home page!
ldap用户名:dhy
ladp密码:333
用户名密码错误,强制退出