Python 权限装饰器

0 投票
1 回答
517 浏览
提问于 2025-05-10 23:35

这是我第一次使用装饰器,我想实现类似这样的功能

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

你可以看到第一次输入错误密码时会给我们警告,但当我们输入正确的信息时,它会显示成功的消息。

撰写回答