我有一个带有许多路径端点的烧瓶应用程序。在每个路由中,我需要做一些常见的操作,如身份验证检查,许可验证逻辑,XSS验证和一些更常见的验证逻辑。我已经阅读了一些帖子,其中提到在每个验证验证方法中使用login_required装饰器。
现在我的问题是我应该为每种验证类型创建一个装饰器,并在每个方法中使用它们。请让我知道如何在Flask应用程序中处理此类情况。
@Login_required()
@Xss_validate()
@permission_check()
def subsribe_service(cs_dict, data_dict):
Logic to subscribe....
@Login_required()
@Xss_validate()
@permission_check()
def unsubsribe_service(cs_dict, data_dict):
Logic to unsubscribe....
@Login_required()
@Xss_validate()
@permission_check()
def delete_service(cs_dict, data_dict):
Logic to delete....
@Login_required()
@Xss_validate()
@permission_check()
def edit_service(cs_dict, data_dict):
Logic to edit....
正如您所看到的,我在所有动作方法中都有一个共同的逻辑作为装饰器。我在所有应用程序中都有这样的装饰器,因为每个动作都需要这3个逻辑。
答案 0 :(得分:1)
添加:您可以使用类似于基于类的视图的可插入视图: 鸡蛋:
from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class BaseViews(MethodView):
decorators = [Login_required, Xss_validate, permission_check]
class SubsribeService(BaseViews):
def get(self):
# get Logic
def post(self):
# post logic
class EditService(BaseViews):
def get(self):
# get Logic
def post(self):
# post logic
app.add_url_rule('/subsribe_service/', view_func=SubsribeService.as_view('subsribe_service'), methods=['GET', 'POST'])
app.add_url_rule('/edit_service/', view_func=EditService.as_view('edit_service'), methods=['GET', 'POST'])
简单轻松又美丽..!
答案 1 :(得分:0)