我正在阅读Miguel Grinberg撰写的Flask Web Development一书,而他如何为应用程序中的各种任务设置权限令我感到困惑。他只是为每个任务设置随机位值吗?
class Permission:
FOLLOW = 0x01
COMMENT = 0x02
WRITE_ARTICLES = 0x04
MODERATE_COMMENTS = 0x08
ADMINISTER = 0x80
他继续说:“将为每个任务分配一个位,并且对于每个角色,该角色允许的任务的位将设置为1”。我不太确定他的意思。
将每个权限标志表示为8位二进制整数:
class Permission:
FOLLOW = 0b00000001
COMMENT = 0b00000010
WRITE_ARTICLES = 0b00000100
MODERATE_COMMENTS = 0b00001000
ADMINISTER = 0b10000000
请注意,对于每个标志,标记如何1
位于其自己的列中。这样,您可以对多个标志进行按位或运算,以为用户提供权限的任意组合:
0b00000001 # FOLLOW
0b00000010 # COMMENT
| 0b00000100 # WRITE_ARTICLES
=============
0b00000111 # FOLLOW, COMMENT, and WRITE_ARTICLES
要测试用户是否具有给定的权限,请按位将其与给定的标志进行“与”运算:
0b10000101 # ???
& 0b10000000 # ADMINISTER
=============
0b10000000 # The result isn't 0, so the user has the ADMINISTER flag
这是将固定数量的权限编码为整数的一种节省空间的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句