python - 如何为 mongoengine 文档实现 Flask-RBAC?

标签 python flask flask-sqlalchemy rbac flask-mongoengine

我有一个现有项目,我在其中使用 mongoengine 文档构建了模型。现在我想在我的项目中实现基于角色的访问控制。我想用 flask-rbac使用我的 User 模型,目前看起来像这样:

class User(Document):
    uuid = UUIDField(primary_key=True, default=Generator.generate_uuid)
    name = StringField(min_length=1, max_length=100, required=True)
    phone_number = StringField(min_length=10, max_length=15, required=True,
                               unique=True, validation=validate_phone_number)
    password = StringField(required=True)
如您所见,我的模型 User 是通过继承 Document 类创建的。但是从flask-RBAC的文档来看,他们使用的是db.Model .我发现很难通过遵循文档来合并 RBAC,或者我可能遗漏了一件非常简单的事情。谁能帮我这个?
我想实现两个角色,管理员和普通用户。

最佳答案

谢谢你的问题,我会试着在这里概述一些东西。flask-rback documentation他们在哪里使用 db.Model声明“但是,如果您的应用程序在 SQLAlchemy 下工作,并且您想将角色保存在数据库中,则需要覆盖 Role 类以适应您的应用程序”。在示例中,数据库连接可能是使用例如 flask-sqlalchemy 完成的如本 minimal example 中所述.然而,纯flask-sqlalchemy不适用于 MongoDb。
当您使用时 Mongoengine ,它有一个扩展 Flask-MongoEngine .使用它,您可以处理与应用程序的连接

from flask import Flask
from flask_mongoengine import MongoEngine

app = Flask(__name__)
db = MongoEngine(app)
那么你可能可以按照flask-rback文档并声明你RoleUser楷模
class User(db.Document, UserMixin):
    # columns
    
而不是 db.relationship在示例中使用 ReferenceField Mongoengine 的。
我无法从您的问题中推断出所有细节,但我希望这可以帮助您转发您的应用程序!
干杯!

关于python - 如何为 mongoengine 文档实现 Flask-RBAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62791083/

相关文章:

javascript - 通过 HTML 将参数从 Python Flask 应用程序传递到 Javascript 文件

session - Flask Redis 服务器 session : Error in save_session

sql - SQLAlchemy 中的多对多查询非常慢

python - Anaconda 导航器无法启动 Windows 10(Spyder 也是如此)

python - 为包含深度嵌套 numpy 数组的 Python 对象实现 __eq__

python - 在asyncio中使用run_in_executor时,事件循环是否在主线程中执行?

python - 有哪些方法可以为 Flask 应用做种?

object - flask SqlAlchemy : TypeError: 'Class' object is not iterable

python - flask /SQLAlchemy 错误 : TypeError: Incompatible collection type: [model] is not list-like

python - 如何检查 Flask reqparse 中的空 JSON 字段以进行发布请求?