python /烧瓶 - 使用blask_rest vith blask_httpauth



我在这个问题中的目标是确保我的API。

在我的应用程序中,我正在使用烧瓶和flask_restlessAPIManager向我的Person对象提供CRUD API。

代码样本:

manager = APIManager(app, flask_sqlalchemy_db=db)
manager.create_api(Person, methods=['GET', 'POST', 'PATCH', 'DELETE'])

,还使用flask_httpauth来保护我的其他路线:

@app.route('/auth/get-token')
@auth.login_required
def get_auth_token():
    token = g.user.generate_auth_token()
    return jsonify({'token': token.decode('ascii'), 'fullname': g.user.fullname})

我无法弄清楚如何将@auth.login_requiredapimanager一起使用以使其不响应匿名请求,我在文档中阅读了一些有关预处理器的内容,但也找不到与@auth.login_required Decorator一起使用的方法。

任何帮助将不胜感激。

不幸的是,目前看起来无烧瓶 - 井井有条并不正式支持将视图装饰器附加到其管理的路线上。添加此功能有一个开放的问题,还有另一个问题专门要求烧瓶-Httpauth。

还有第三个问题,其中用户显示了在烧瓶 - 井下创建其端点后手动注入装饰器的技术。该用户示例中添加get_cache装饰器的片段如下:

manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db=db)
manager.create_api(Person, methods=['GET', 'POST', 'DELETE'])
manager.create_api(Person2, methods=['GET', 'POST', 'DELETE'])
# hackish view decoration:
for model in [Person, Person2]:
    model_route = '{0}api0.{0}api'.format(model.__name__.lower())
    app.view_functions[model_route] = get_cache(app.view_functions[model_route])

在您的情况下,您将用auth.login_required替换get_cache

更新:如下注释中所述,'{0}api0.{0}api'中的参数是表名称,因此,仅在将表格名称放在烧瓶名称的情况下才能生成。如果该模型具有自定义表名,则使用它代替model.__name__.lower()

我建议您使用Flask-Security。有一个有关如何将其用于安全API接口的教程。

相关内容

  • 没有找到相关文章

最新更新