
用户角色
|
101
9.3
检验角色
为了简化角色和权限的实现过程,可在 User 模型中添加一个辅助方法,检查赋予用户的角
色是否有某项权限。这个辅助方法的实现很简单,直接委托前面添加的权限管理方法,如
示例
9-6
所示。
示例
9-6
app/models.py
:检查用户是否有指定的权限
from flask_login import UserMixin, AnonymousUserMixin
class User(UserMixin, db.Model):
# ...
def can(self, perm):
return self.role is not None and self.role.has_permission(perm)
def is_administrator(self):
return self.can(Permission.ADMIN)
class AnonymousUser(AnonymousUserMixin):
def can(self, permissions):
return False
def is_administrator(self):
return False
login_manager.anonymous_user = AnonymousUser
如果角色中包含请求的权限,那么 User 模型中添加的 can() 方法会返回 True,表示允
许用户执行此项操作。因为经常需要检查是否具有管理员权限,所以还单独实现了