Flask——用户权限管理

时间:2022-01-24 15:25:00

权限操作:

操作 位值 说明
关注用户 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则表示该用户角色可以执行该操作