標籤:

flask 角色驗證中位操作求解?

can() 在請求和賦予角色兩種許可權之間的位與操作。請問什麼是位與操作??

(self.role.permissions permissions) == permissions

這句話怎麼理解??

def can(self, permissions):
return self.role is not None and
(self.role.permissions permissions) == permissions

def 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介紹

TAG:Python | Flask |