Flask -Restplus +摇摇欲坠,如何限制通过身份验证的用户+ /角色

时间:2019-09-09 18:30:08

标签: flask flask-restplus

我有一个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应用)。

如果我可以插入一些自定义逻辑使其成为基于角色的,那就更好了(即:只有我应用程序中的管理员才能看到此端点的文档,依此类推。)

我该怎么做?

1 个答案:

答案 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,并使用更精细的规则。