
第 9 章
用户角色
Web
应用中的用户并非都具有同等地位。在多数应用中,一小部分可信用户具有额外权
限,用于保障应用平稳运行。管理员就是最好的例子,但有时也需要介于管理员和普通用
户之间的角色,例如内容协管员。为此,要为所有用户分配一个
角色
。
在应用中实现角色有多种方法。具体采用何种实现方法取决于所需角色的数量和细分程
度。例如,简单的应用可能只需要两个角色,一个表示普通用户,一个表示管理员。对于
这种情况,在
User
模型中添加一个
is_administrator
布尔值字段可能就够了。复杂的应
用可能需要在普通用户和管理员之间再细分出多个不同等级的角色。有些应用甚至不能使
用分立的角色,赋予用户一系列独立的
权限
或许更合适。
本章介绍的用户角色实现方式结合了分立的角色和权限,赋予用户分立的角色,但是各个
角色都通过权限列表定义允许用户执行的操作。
9.1
角色在数据库中的表示
第
5
章为了演示一对多关系,创建了一个简单的 roles 表。示例
9-1
是改进后的 Role 模型。
示例
9-1
app/models.py
:角色数据库模型
class Role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
default = db.Column(db.Boolean, default=False, index=True) ...