是否將按位訪問控制列表視爲反模式?我很好奇,因爲我在我正在處理的一個應用程序中看到了這一點,雖然看起來很有趣,但它有點作用,最普遍的共識是什麼。我看到的缺點是,很難知道什麼樣的權限8是否會更容易看到「編輯」或「經理」。但是,按比例的方法似乎在技術層面上起作用。是否將按位訪問控制列表視爲反模式?
回答
它節省了存儲空間,而且它在各地都有使用。例如,對於有一個人既是「編輯」又是「經理」的情況,這非常適用。你不應該記住8是什麼權限,你應該有一些名字,指的是你定義一次的那些數字,然後不必擔心。
感謝您的迴應,我不知道這種方法在ACL中的普及程度如何。我感到開明。 –
我不知道是否有官方的共識,但因爲如果它沒有以一種聰明的方式使用字符串,我會認爲它是一種反模式,因爲您將被限制到特定數字使用的位數類型。
您可能已經足夠了解您的項目的範圍,以確保您永遠不會超過32/64。
權限值的可讀性不引起太多關注。
這不是一個反模式,但它確實有一些顯著陷阱需要注意的:
- 使用訪問控制位域使其無法有效地列出指定用戶有權訪問的對象。 (搜索
canRead = 1
可以在SQL中編入索引,但permissions & 0x40 = 0x40
不能)。 - 整數中有有限的位數。確保你永遠不需要超過31個。(使用符號位很亂,PHP在32位系統上運行時沒有64位整數)。事實上,避免將它們用於動態分配的任何東西 - - 最好只將它們用於內置權限。
- 位掩碼在數據庫控制檯中難以閱讀。
到處都是,在數據庫中使用一堆個人TINYINT
(或類似的)標誌可能會好得多。將值打包到位域中節省的存儲空間不太值得花費。
我認爲posgresql可以索引任何表達式,而不僅僅是列。 –
正確,但有些困難。我相信你必須爲每個你需要的'X'的值分別索引'permissions&X';關於'permissions'的單個索引將無濟於事。 – duskwuff
- 1. 訪問模式視圖控制器父
- 2. ORM是否爲反模式?
- 3. Drupal訪問控制列表
- 4. 訪問表單,與控制源相反
- 5. 控制器想知道列表的視圖是否爲空
- 6. 訪問控制列表問題loopback.io
- 7. 這是否被視爲「數據庫作爲IPC」反模式?
- 8. 是否有可能從控件的視圖模型訪問列表視圖項目模板中的屬性?
- 9. 角訪問模式父控制器
- 10. SharePoint視圖訪問控制
- 11. 使用subscription.next()是否爲反模式?
- 12. 訪問控制列表或警予
- 13. 訪問控制列表(ACLs)symfony2
- 14. Debian Lenny中的訪問控制列表
- 15. Lotus Notes中的訪問控制列表
- 16. joomla中的ACL(訪問控制列表)?
- 17. 訪問控制列表基礎
- 18. PHP訪問控制列表的鏈接
- 19. Varnish默認VCL訪問控制列表
- 20. 反映控制器列表
- 21. 在容器視圖控制器中訪問父視圖按鈕
- 22. data.table快速訪問列按表達式
- 23. 訪談問題:控制冰箱行爲的設計模式
- 24. 訪問視圖控制器的視圖
- 25. 如何構建訪問控制列表(ACL)的數據模型
- 26. 可否將Hive反序列化爲提供的模式?
- 27. 是否有任何內置的django認證和acl =訪問控制列表庫?
- 28. ORA-24247:網絡訪問被訪問控制列表(ACL)拒絕
- 29. SSRS 401.3由於訪問控制列表導致拒絕訪問
- 30. 用於反向代理的認證/訪問控制模塊NGINX
您似乎在將實施方法與其具體細節混爲一談。沒有理由不使用命名常量來代替硬編碼位的位置。另外,有多少位?它是固定的大小,還是可以無限增長? –
感謝您的回覆。背景故事是我以前從未考慮過這種方法,但我正在爲實現此目標的公司工作,並且我想知道使用此方法的好處。對我來說,這是非常混淆和不容易的文件,但就像我說的那樣。我想反對使用它,但它看起來像人們使用這很多,所以我想我正在學習新的東西。我更喜歡一個與數據庫中的列相關的ACL,枚舉標誌是1,0。 –