我有一个现有项目,我在其中使用 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文档并声明你Role
和 User
楷模class User(db.Document, UserMixin):
# columns
而不是 db.relationship
在示例中使用 ReferenceField
Mongoengine 的。我无法从您的问题中推断出所有细节,但我希望这可以帮助您转发您的应用程序!
干杯!
关于python - 如何为 mongoengine 文档实现 Flask-RBAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62791083/