美文网首页
Python装饰器9-函数装饰器的应用

Python装饰器9-函数装饰器的应用

作者: dnsir | 来源:发表于2019-06-15 11:51 被阅读0次

函数装饰器应用场景-权限验证

#! -*- coding: utf-8 -*-
"""
使用场景1: 授权
"""

from functools import wraps

"""
执行每个函数之前,获取验证参数
如果没有验证过,就调用验证函数
如果已经验证过,则执行当前函数
"""

class Req:
    def __init__(self, auth=False, user=''):
        self.auth = auth
        self.user = user

def authenticate(user):
    if user != 'admin':
        return False
    return True


def requires_auth(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        auth = r.auth
        if auth:
            return f(*args, auth=True, **kwargs)
        # 也有可能不是return?
        if not authenticate(r.user):
            return f(*args, auth=False, **kwargs)
        return f(*args, auth=True, **kwargs)

    return decorated

r = Req()

@requires_auth
def access_pic(auth=False):
    if auth:
        print('access pic succ')
    else:
        print('access pic fail')
access_pic()
r.user = 'admin'
access_pic()

执行结果:

access pic fail
access pic succ

小结

Python装饰器在Flask中一个典型的应用场景就是权限验证

相关文章

  • Python装饰器9-函数装饰器的应用

    函数装饰器应用场景-权限验证 执行结果: 小结 Python装饰器在Flask中一个典型的应用场景就是权限验证

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

  • Flask 视图和路由的进阶技能

    视图装饰器 Python 装饰器是用于转换其它函数的函数。当一个装饰的函数被调用的时候,装饰器也会被调用。接着装饰...

  • python 装饰器 补充

    重新理解python 装饰器 python 装饰器是一个函数,被装饰器所装饰的代码块最终也是一个函数这个对于一般的...

  • 解惑,从新认识python装饰器

    概念 python有两种装饰器: 函数装饰器(function decorators) 类装饰器(class de...

  • Python装饰器

    Python装饰器 装饰器的本质是什么? 装饰器等价于高阶函数,形如myfunc=decorator(myfunc...

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • 第012篇:三大神器之装饰器

    Python的三大神器:装饰器、迭代器、生成器 1、装饰器  1.1、什么是装饰器 装饰器的本质是一个函数 = 返...

  • 装饰器

    装饰器是python提供的一个重要特性,使用装饰器,可以允许修改其他函数功能. 什么是装饰器 上边已经提到,装饰器...

  • 装饰器函数

    在Python有一类特殊的函数,叫装饰器函数。装饰器函数可以在函数的调用的时候,将装饰器的内容注入到函数之中。在定...

网友评论

      本文标题:Python装饰器9-函数装饰器的应用

      本文链接:https://www.haomeiwen.com/subject/afxbfctx.html