【发布时间】:2013-12-10 03:35:40
【问题描述】:
我们正在工作中用 Flask + Jinja2 编写一个 Web 应用程序。 该应用程序已注册用户,这些用户可以根据他们的角色访问某些页面。为了在服务器端实现这一点,我们只需使用装饰页面:
@app.route('/action1')
@security_requirements(roles=['some_role'])
def action1():
...
装饰器检查登录用户的角色列表中是否有“some_role”,并决定是将调用传递给装饰函数还是将用户重定向到“拒绝访问”页面。
该应用程序还有一个使用引导程序实现的导航栏。导航栏使用基本模板显示在每个页面中。就目前而言,应用程序中的每个页面在导航栏中都有一个条目,无论当前用户是否可以访问它。尽管这不是一个安全漏洞,但我想隐藏他们无法访问的用户页面。此外,我想在不复制 Jinja 模板中允许的角色列表的情况下实现此功能。是否可以通过使用我当前的装饰器以某种方式在 Jinja 中实现此功能?
【问题讨论】:
-
是
security_requirements你的装饰师吗?可以改吗? -
@twil - 是的,这是我的
标签: python web permissions flask jinja2