我刚刚完成了我的python flask 101 tutorial here。一切顺利,现在我已经成功运行了烧瓶服务器。
但是,现在我想添加另一个休息端点/products
,它应返回此例中的产品样本列表。由于它是基于jwt
的实现,因此我想确保用户请求在执行前由/status
或/auth
api拦截。
有没有办法重用当前的实现,而不是为新的休息端点复制粘贴整个事情?
答案 0 :(得分:0)
有两种方法可以做到这一点。
第一个有点隐含。可以指定应在请求之前和之后调用的方法。
@app.before_request
def authenticate():
# logic for verifying tokens
pass
将为每条路线调用身份验证功能。
文档
另一方面,您可以创建一个视图装饰器:
from functools import wraps
def requires_auth(view):
@wraps(view)
def decorated(*args, **kwargs):
# logic for verifying tokens
return view(*args, **kwargs)
return decorated
然后你可以包装任何应该用这个装饰器保护的视图E.g
@requires_auth
@app.route('/myroute')
def my_route():
# Normal logic for view
pass
这取决于您的使用案例,如果您的Flask应用是一个大多数视图受到保护的API,那么如果您有大量公开的页面,则可以使用.before_request
方法。你可以使用装饰器。