flask 角色驗證中位操作求解?
01-29
can() 在請求和賦予角色兩種許可權之間的位與操作。請問什麼是位與操作??
(self.role.permissions permissions) == permissions
這句話怎麼理解??
def can(self, permissions):
return self.role is not None and
(self.role.permissions permissions) == permissionsdef is_administrator(self):
return self.can(Permission.ADMINISTER)
程序中的所有數在計算機內存中都是以二進位的形式存儲的。位運算說穿了,就是直接對整數在內存中的二進位位進行操作。
而 與 操作呢,就是有對應的兩個二進位均為1時,結果位才為1,否則為0。接下來請你把書翻到P98。
看到表9-1 程序的許可權 裡面的位值。
然後再看到下面的表9-2 用戶角色例如,把用戶的許可權值和關注用戶進行位與運算
00000111 00000001 = 00000001
再例如,把用戶的許可權值和管理員許可權進行位與運算
00000111 10000000 = 00000000
以上操作就是這段代碼所做的事:
(self.role.permissions permissions) == permissions
通過位與運算來檢驗操作是否符合身份許可權。
不知道講明白沒有。推薦閱讀:
※Flask表單:自定義表單樣式
※如圖是什麼錯誤。。。?
※第四期 · 簡單了解logging模塊 :結合Flask理解和使用try……except與logging模塊
※Flask介紹