【发布时间】:2016-01-16 12:22:54
【问题描述】:
我只希望登录用户访问我的 RESTfull API。我一直在搜索,找不到任何告诉我如何做的来源。很奇怪,因为我认为保护数据很常见。
我正在使用带有Flask-login 和flask-Restless 的Flask 项目。我通过SQL-alchemy 类对我的数据进行CRUD 以访问我的MySQL 数据库。我创建了我的 RESTfull api,例如:
api_manager = APIManager(app, flask_sqlalchemy_db=db)
api_manager.create_api(Items, methods=['GET', 'POST', 'DELETE', 'PUT'])
我应该如何限制未登录的用户对我的 RESTfull api 的访问,或者我不能使用 flask-restless 进行访问?如果没有,我应该/可以更好地使用什么?
我正在尝试一些技术,欢迎任何方向的建议!
提前致谢
在玩了一些之后,我找到了解决方案。它可能不是最好的,但不需要太多代码就可以解决问题:
@app.before_request
def before_request():
if ('/api/' in str(request.url_rule)) && (not current_user.is_authenticated()):
return redirect('/login')
这是正确的方法吗?为每个可能的 HTTP 请求添加 Preprosessors 需要大量代码。 https://flask-restless.readthedocs.org/en/latest/customizing.html#request-preprocessors-and-postprocessors
【问题讨论】:
-
我正在尝试做同样的事情,如果你想出了更好的解决方案,我希望你能分享:)
-
有一个 hacky 方法可以做到这一点:stackoverflow.com/questions/42533259/…
-
也不错..
-
我删除了我的评论,因为我看到它与我在问题更新中提到的基本相同的解决方案。
标签: python flask flask-restless