python – 在flask中设置权限

我正在阅读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在它自己的列中.这样,您可以将多个标志按位OR,以便为用户提供任何权限组合:

   0b00000001  # FOLLOW
   0b00000010  # COMMENT
|  0b00000100  # WRITE_ARTICLES
=============
   0b00000111  # FOLLOW, COMMENT, and WRITE_ARTICLES

要测试用户是否具有给定权限,请使用给定标志按位AND它:

   0b10000101  # ???
&  0b10000000  # ADMINISTER
=============
   0b10000000  # The result isn't 0, so the user has the ADMINISTER flag

它只是一种在整数中编码固定数量权限的节省空间的方法.

点赞