权限操作:
操作 | 位值 | 说明 |
---|---|---|
关注用户 | 0b00000001(0x01) | 关注其他用户 |
发表评论 | 0b00000010(0x02) | 在别人写的文章中发表评论 |
写文章 | 0b00000100 | 发表文章 |
管理他人评论 | 0b00001000 | 查处他人不良评论 |
管理员 | 0b10000000 | 管理网站 |
可以写成一个类方便调用
class Permission:
FOLLOW=0x01
COMMENT=0x02
WRITE_ARTICLES=0x04
MODERATE_COMMEMTS=0x08
ADMINISTER=0x80
这里用了5位,剩余三位可以后续扩展
用户角色:
用户角色 | 权限 | 说明 |
---|---|---|
匿名 | 0b00000000(0x00) | 未登录的用户,只有阅读权限 |
用户 | 0b00000111(0x07) | 发表文章、评论、关注,默认角色 |
协管员 | 0b00001111(0x0f) | 审查不良评论 |
管理员 | 0b11111111(0xff) | 所有权限,包括修改其他用户角色的权限 |
用户的角色,存储在数据库的User.role中
权限检查:
import Permission
class User():
def can(self,permission):
return self.permission & permission === permission
#位与操作符 &,对比两个数据,位值相同的位为1
user.can(Permission.Administer)
在用户类中,定义实例方法can()
user.can()返回True则表示该用户角色可以执行该操作