如何使用 Flask-Login 和 Flask-Principal 的权限 class 隐藏 jinja2 模板引擎中的某些链接?

How can I hide certain links in jinja2 template engine using Flask-Login and Permission class from Flask-Principal?

我正在按照文档进行操作,并且已经创建了我的 Permission 实例,因此我可以装饰我的路由函数,但是,我不知道如何在模板中隐藏链接。我在这里看到了一个使用角色的答案,但是有没有办法改用 Flask-Principal 的权限?

Hiding inaccessible links in Jinja2 templates 提问者在这里的回答听起来不错,但会丢掉我的权限,我也不太明白他在做什么,只是他不必重新初始化 permissions/roles 在 jinja2 模板端。

我的目标是在学习的过程中了解每个 Flask 扩展的用途。这就是为什么我想知道是否有一种方法可以做到这一点,而不必使用 Flask-Security 或放弃我已经用 Flask-Principal 定义的权限。

我使用 Flask-Nav with Flask-Bootstrap 创建导航栏,我认为您也应该在代码中遵循其结构。有 2 个基本步骤:

  1. 在您的应用代码中定义一个(多维)导航链接列表,您可以在此过程中使用您的所有权限。将此过滤后的列表传递给您的模板。
  2. 在您的模板中循环遍历列表并从中生成一个不错的 HTML 代码。

恕我直言,这是创建依赖于角色或权限的导航栏的正确方法,因为它将 HTML 生成代码与 "app" 代码分开。