Jive筆記7 -- Jive的硬傷 (轉)
(1)Jive2.x顆粒度太粗,只是細分到Forum,所以其無法完成類似 貼/需要回復才能看見 這樣的功能。當
然,可以透過屬性操作,修補來實現,但這不是我們的目標。
(2)Jive2.x許可權規則:上級覆蓋下級。
舉例:有一個Category 1,everyone 可read,其下有forum 1,2,3,.....100個。
現在,我想讓forum2只讓註冊訪問,則你無法做到!
除非:刪除Category1的everyone read許可權,分別給forum1,3,4,5....100新增everyone read許可權,然後再給forum2設
置registed user read許可權。
(3)如果Category/Forum數量成百上千,Jive會大大降低。
Jive2.x在設計的時候就沒有考慮到這種情況,而許可權也只落實到Forum。在程式碼處理上,看Iterator.
public IteratorProxy(int type, Iterator iterator, Authorization authorization, ForumPessions permissions) { this.iterator = iterator; this.authorization = authorization; this.permissions = permissions; // Load the appropriate proxy factory depending on the type of // that we're iterating through. Each proxy factory is responsible // for checking that the user has permission to view the object, and // then wrap it with an appropriate proxy. switch (type) { // CATEGORY case JiveGlobals.FORUM_CATEGORY: // Create a class that wraps forums with proxies. proxyFactory = new ProxyFactory() { public Object createProxy(Object obj, Authorization auth, ForumPermissions perms) { ForumCategory category = (ForumCategory)obj; // Create a new permissions object with the combination // of the permissions of this object and tempPermissions. int parentPerms = perms.toInt(); // Never inherit the show category permission. ForumPermissions newPerms = new ForumPermissions( ForumPermissions.setBit(parentPerms, ForumPermissions.SHOW_CATEGORY, false)); ForumPermissions catPerms = category.getPermissions(auth); newPerms = new ForumPermissions(catPerms, newPerms); // Return the object if the user has permission. if (newPerms.get(ForumPermissions.READ_FORUM) || newPerms.get(ForumPermissions.SHOW_CATEGORY) || newPerms.get(ForumPermissions.MODERATE_MESSAGES) || newPerms.get(ForumPermissions.MODERATE_THREADS) || newPerms.get(ForumPermissions.FORUM_ADMIN) || newPerms.get(ForumPermissions.CATEGORY_ADMIN) || newPerms.get(ForumPermissions.SYSTEM_ADMIN)) { return new ForumCategoryProxy(category, auth, newPerms); } // Otherwise return null. else { return null; } } }; break;
分析:假設存在Category 1,2,3,4,5,其中Category2只允許註冊使用者訪問。現在是匿名訪問。則構造中傳入
的Iterator包含了全部的Category,在匿名類的createProxy()中判斷了許可權,如果編歷到category 2,毫無疑問會
返回null(這樣,category2被過濾了)。匿名類的createProxy()將被iteratorProxy的getNextElement(),程式碼如下
:
public Object getNextElement() { while (iterator.hasNext()) { Object element = proxyFactory.createProxy(iterator.next(), authorization, permissions); if (element != null) { return element; } } return null; }
這裡的while()將跳過被過濾的物件(其實是null物件咯),返回當前auth可見的Category物件。
再觀察ForumCategory介面,只有categories()方法,而沒有categories(ResultFilter),說明沒有做分頁處理。
如果我們新增分頁處理,得注意由於iteratorProxy的過濾,而導致實際得到的Category數目和page size的不一致。
比如:有30個Category,我一個categories(resultFilter)呼叫返回了15個,經過IteratorProxy的時候,被過濾掉了1個
這樣實際上只有14個Category了,這樣會讓JSP迷惑,覺得ResultFilter.setPageSize()不對了。
附:本來是很長的一篇筆記,花費了一個多小時,想不到提交表單的時候,IE崩潰了!欲哭無淚!查出來罪魁禍首是
superbar.dll,不知道是什麼垃圾,全面清剿中。。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958270/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實用乾貨,教你解決Chrome佔記憶體硬傷Chrome記憶體
- 沒有學歷真的是硬傷。
- 怎麼看筆記本硬體?想買筆記本不知如何看硬體筆記
- 中通的雙刃劍:市值新高與模式硬傷模式
- 閱讀筆記7筆記
- 7/14 訓練筆記筆記
- IoC(控制反轉)的理解筆記筆記
- 封堵全球半導體制造,美國新策略的四道硬傷
- 完美日記被“卷”傷
- 硬體開發筆記(四):硬體開發基本流程,製作一個USB轉RS232的模組(三):設計原理圖筆記
- WPF筆記7——TypeConverter型別筆記型別
- Tensorflow學習筆記No.7筆記
- docker筆記7-docker的幫助命令Docker筆記
- Python——格式轉換的學習筆記Python筆記
- The art of multipropcessor programming 讀書筆記-硬體基礎2筆記
- 恆訊科技的海外直播專線:讓直播網路不再是硬傷
- 7大筆記應用,讓你的程式碼效率翻7倍筆記
- 我的隨行筆記7 C++ Primer Plus筆記C++
- [學習筆記 #7] Link Cut Tree筆記
- PHP7效能優化筆記PHP優化筆記
- G01學習筆記-7筆記
- LeetCode - 解題筆記 - 7 - Reverse IntegerLeetCode筆記
- 轉載北佬的hyperf原始碼筆記原始碼筆記
- CentOS7安裝Docker遇到的問題筆記CentOSDocker筆記
- Spring筆記(7) - Spring的事件和監聽機制Spring筆記事件
- 讀書筆記(7)《纏中說禪》筆記
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- 技術轉向專案管理的心得筆記專案管理筆記
- Cris 的 Scala 筆記整理(十):隱式轉換筆記
- Android進階;Activity的棧與跳轉(筆記)Android筆記
- 2024-7SD省營集訓筆記 & 遊記筆記
- repuest轉發學習筆記一筆記
- 筆記本外接顯示器會影響效能嗎 筆記本外接顯示器對電腦有負擔傷害嗎筆記
- PHP 轉 Node 筆記(二. 基礎的Web開發)PHP筆記Web
- JS字串轉換為JSON的四種方法筆記字串JSON筆記
- 分散式訊息系統如何解決訊息的順序&重複兩大硬傷?分散式
- 程式碼整潔之道--讀書筆記(7)筆記
- 《MySQL實戰45講》(1-7)筆記MySql筆記
- 【Programming in Lua1-7章】讀書筆記筆記