我有一个Flask-Restplus端点,如下所示:
TypeError in line 44 of myworkflow.py:
unsupported format string passed to Series.__format__
File "myworkflow.py", line 44, in <module>
目前,此端点的庞大文档是公开的。
我想将仅对经过验证的用户访问swagger文档。 (通过身份验证是指我的Flask应用)。
如果我可以插入一些自定义逻辑使其成为基于角色的,那就更好了(即:只有我应用程序中的管理员才能看到此端点的文档,依此类推。)
我该怎么做?
答案 0 :(得分:0)
这是使用@ app.before_request的黑客:
DOC_URL = api_bp.url_prefix + '/doc'
@app.before_request
def before_request():
if request.path[0: len(DOC_URL)] == DOC_URL and not (current_user and current_user.is_authenticated):
print("Unauthenticated user trying to access swagger docs. Redirecting")
return redirect(url_for('user.login'))
其中“ api_bp”是Swagger记录的flask-restplus api蓝图。
它可以扩展为检查用户角色。但是,这适用于整个文档页面,无法以这种方式实现更细粒度的规则(逐个端点)。
flask-restplus固有的解决方案,即:直接使用flask-restplus API,并使用更精细的规则。