Python 权限装饰器
这是我第一次使用装饰器,我想实现类似这样的功能
import functools
def checkUser(tag):
def dec(f0):
@functools.wraps(f0)
def wrapper(userName, loggedinUser):
if userName == loggedinUser:
return "You are allowed to view this page"
else:
return "Error"
return wrapper
return dec
@checkUser
def test2(userName, loggedinUser):
return userName, loggedinUser
print test2()
我很确定这样做是行不通的,这只是我的想法。我只是复制了这些代码并进行了编辑。我对这些东西真的很陌生。
相关文章:
- 暂无相关问题
1 个回答
2
对于你提供的代码,如果你只是想检查用户,其实不需要用装饰器,直接比较就可以了。不过既然你想用装饰器来检查权限,那我觉得你可以这样做:
import functools
def check_user(username, password):
def dec(f):
@functools.wraps(f)
def wrapper(login_user, login_password):
f(login_user, login_password)
if username == login_user and password == login_password:
return "You are allowed to view this page"
else:
return "Check your password and username"
return wrapper
return dec
@check_user('jhon', 'passwd')
def test2(login_user, login_password):
print "hello, {0}".format(login_user)
print test2('jhon', 'foobar')
print test2('jhon', 'passwd')
输出应该是:
hello, jhon
Check your password and username
hello, jhon
You are allowed to view this page
你可以看到第一次输入错误密码时会给我们警告,但当我们输入正确的信息时,它会显示成功的消息。