视图类装饰器
2023年8月3日小于 1 分钟
视图类装饰器
装饰器
定义装饰器,判断请求头中,是否存在用户名?
- 存在,认为用户是合法用户,允许通过
- 不存在,拒绝用户访问
from flask import request
def login_auth(func):
def wrapper(*args, **kwargs):
# 1. 获取用户请求头中的 用户名 信息
username = request.headers.get('USERNAME')
# 2. 判断用户名
if username:
# 2.1 存在,继续执行
return func(*args, **kwargs)
else:
# 2.2 不存在,拒绝访问
return {
'msg': '认证失败'
}, 401
return wrapper
所有方法添加装饰器
from flask_restful import Resource
from utils.auth import login_auth
# 图书的所有操作:增、查 都需要通过装饰器验证权限
class BookResource(Resource):
method_decorators = [login_auth]
def get(self):
return ['图书1', '图书2']
def post(self):
return {
'name': '图书3'
}, 201
为单个方法指定装饰器
from flask_restful import Resource
from utils.auth import login_auth
# 此时,只有图书的 添加操作需要 通过装饰器验证权限,而查询操作就不需要验证权限
class BookResource(Resource):
method_decorators = {
'post': [login_auth]
}
def get(self):
return ['图书1', '图书2']
def post(self):
return {
'name': '图书3'
}, 201