管理用户
一旦我们有了用户认证系统,我们需要能够管理用户。这通常包括允许管理员创建、编辑和删除用户。为此,我们需要添加授权系统。
我们可以使用Flask-Principal扩展来实现授权系统。Flask-Principal提供了一种易于使用的方式来定义和检查角色和权限。首先,我们需要安装Flask-Principal:
代码语言:javascript复制pip install flask-principal
现在,我们将创建一个简单的角色和权限系统。我们将使用一个名为“roles”的表来保存角色,以及一个名为“permissions”的表来保存权限。我们还将创建一个UserRole模型来表示用户和角色之间的关系:
代码语言:javascript复制from flask_principal import RoleNeed, Permission
class Role(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True, nullable=False)
def __repr__(self):
return f"Role('{self.name}')"
class Permission(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True, nullable=False)
def __repr__(self):
return f"Permission('{self.name}')"
class UserRole(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
role_id = db.Column(db.Integer, db.ForeignKey('role.id'), nullable=False)
def __repr__(self):
return f"UserRole('{self.user_id}', '{self.role_id}')"
现在,我们可以创建一些角色和权限。例如,我们可以创建一个“admin”角色,拥有所有权限:
代码语言:javascript复制admin_role = Role(name='admin')
db.session.add(admin_role)
db.session.commit()
admin_permission = Permission(name='admin')
db.session.add(admin_permission)
db.session.commit()
admin_role_permission = RolePermission(role=admin_role, permission=admin_permission)
db.session.add(admin_role_permission)
db.session.commit()