Flask 安全角色权限

问题描述 投票:0回答:1

Flask Security 提供了一个角色系统,一个用户可以被分配一个或多个角色。与使用@login_requiered登录类似,有一个@roles_required('Admin')。

Flask Security 中也有权限。 我的理解是,我可以为角色分配不同的权限,如果具有特定角色的用户稍后登录,我可以使用 @permissions_required('permissionXYZ') 来检查该用户是否具有所需的权限。

我已成功创建角色和用户,并检查用户是否具有角色。我只是无法获得具有工作权限的整个部分。确切地说,我只得到了以整数值运行的权限系统。我需要做什么才能为角色添加权限?

我在某处找不到此角色权限系统的示例,并且文档对我来说并不完全清楚(https://flask-security-too.readthedocs.io/en/stable/api.html#flask_security.permissions_required )

class User(db.Model, UserMixin):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    username = Column(String(64), index=True, unique=True, nullable=False)
    password_hash = Column(String(256))
    email = Column(String(80), index=True, unique=True, nullable=False)
    roles = db.relationship('Role', secondary=roles_users, backref='roled')
    fs_uniquifier = Column(String(255), unique=True,
                           nullable=False, default=lambda: str(uuid.uuid4()))

class Role(db.Model, RoleMixin):
    __tablename__ = 'role'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    permissions = db.Column(db.String(80), default='')
admin_role = user_datastore.create_role(name="admin", permissions=1)
user = User(username=os.getenv('ADMIN_USERNAME'), email=os.getenv('ADMIN_EMAIL'))
password = os.getenv('ADMIN_PASSWORD')
        if user and password:
            user.set_password(password)
            security.datastore.add_role_to_user(user, admin_role)
@permissions_required('1')
def exmaple():
         stuff...

我尝试简单地添加带有整数的权限参数(在示例中使用 1 有效)。但想法是(如果我正确理解文档)在那里存储一个列表(数据类型),这当然不能在(玛丽亚)数据库中以这种形式工作。

python flask permissions roles flask-security
1个回答
0
投票

在模型文档中:https://flask-security.readthedocs.io/en/stable/models.html#additional-functionity它描述了 ORM 层负责处理“字符串列表” - 其中一些 ORM/DB(例如 Mongo)原生支持。对于类似 SQL 的 ORM - Flask-Security 提供了一个实用方法 AsaList - 记录在此处:https://flask-security.readthedocs.io/en/stable/api.html#flask_security.AsaList

© www.soinside.com 2019 - 2024. All rights reserved.