我有一个使用Flask-Security和MySQL的Flask应用程序。不幸的是,Flask-Security不提供组/多租户管理(https://github.com/mattupstate/flask-security/issues/285)。
我想实现以下内容:
我不确定如何实施第2步和第4步。是否可以使用Flask g.object(http://flask.pocoo.org/docs/0.10/api/#flask.g)来实现类似的内容?
答案 0 :(得分:0)
Flask是一个很棒的框架,有许多现成的扩展,但在定制解决方案方面往往需要一些肘部润滑脂。
由于这似乎是您使用的身份验证后端缺少的功能,因此您可以考虑以下事项:
后两种选择都是劳动密集型的。
完成组管理后,您确实可以使用flask g选项。它应该足以存储对用户对象的引用。任何查询和过滤都可以在后端完成。
一些有趣的读物:
Building your own simple permission system如果您决定自己动手,可能会让您开始。
Related question解决方案实现了Flask-Principal
答案 1 :(得分:0)
您最有可能重复使用Flask-Security的角色来进行用户分组,并使其与您的用例保持相关。
您可以根据用户拥有的角色以及他们在多个角色中执行特定操作,您可以将特定角色存储在会话变量中,以跟踪他们现在所处的角色并向他们展示特定于该角色(组)的功能。
if user_datastore.find_role("db_amin") in current_user.roles:
... db admin specific ...
您还可以使用装饰器执行角色特定路线:
@roles_accepted("db_admin", "db_backup")
@roles_required('db_admin')