【问题标题】:Python decorator for permission用于权限的 Python 装饰器
【发布时间】:2016-02-26 11:09:57
【问题描述】:

这是我第一次使用装饰器,我想展示这样的东西

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

我很确定它不会起作用,这只是我的想法。我只是复制了这些代码并进行了编辑。我对此真的很陌生。

【问题讨论】:

  • 嗯,你试过了吗?也许它确实有效。不尝试就无法知道...

标签: python django decorator


【解决方案1】:

对于你给出的代码,如果你只是想检查用户,你不需要使用装饰器,为什么不直接比较它们呢?由于您想使用装饰器,请检查权限。我想你可能想这样做:

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

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

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 2011-08-15
    • 2015-09-04
    • 2014-01-01
    • 2013-02-09
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多