Jive笔记7 -- Jive的硬伤

原创 2003年05月30日 14:54:00
Jive笔记7 -- Jive的硬伤

(1)Jive2.x权限颗粒度太粗,只是细分到Forum,所以其API无法完成类似 加密贴/需要回复才能看见 这样的功能。当

然,可以通过属性操作,修补jsp来实现,但这不是我们的目标。

(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。在代码处理上,看IteratorProxy.java
 IteratorProxy( type, Iterator iterator, Authorization authorization,
            ForumPermissions permissions)
    
        this.iterator = iterator;
        this.authorization = authorization;
        this.permissions = permissions;
 
        
        
        
        
         (type) 
            
             JiveGlobals.FORUM_CATEGORY:
                
                proxyFactory =  ProxyFactory() 
                     Object createProxy(Object obj, Authorization auth,
                            ForumPermissions perms)
                    
                        ForumCategory category = (ForumCategory)obj;
                        
                        
                         parentPerms = perms.toInt();
                        
                        ForumPermissions newPerms =  ForumPermissions(
                                ForumPermissions.setBit(parentPerms,
                                ForumPermissions.SHOW_CATEGORY, ));
                        ForumPermissions catPerms = category.getPermissions(auth);
                        newPerms =  ForumPermissions(catPerms, newPerms);
 
                        
                         (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))
                        
                              ForumCategoryProxy(category, auth, newPerms);
                        
                        
                         
                             ;
                        
                    
                ;
                ;

分析:假设存在Category 1,2,3,4,5,其中Category2只允许注册用户访问。现在是匿名访问。则构造函数中传入
的Iterator包含了全部的Category对象,在匿名类的createProxy()中判断了权限,如果编历到category 2,毫无疑问会
返回null(这样,category2被过滤了)。匿名类的createProxy()将被iteratorProxy的getNextElement()调用,代码如下


 Object getNextElement() 
         (iterator.hasNext()) 
            Object element = proxyFactory.createProxy(iterator.next(),
                    authorization, permissions);
             (element != ) 
                 element;
            
        
         ;
    

这里的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,不知道是什么垃圾,全面清剿中。。。。

 

bbs源码分析 之 jive中的设计模式

(来源:http://www.cn.ibm.com/) 摘要:Jive 是一个开放源码的论坛项目, 也就是我们所常见的 BBS, 采用了 SUN 公司的JSP 技术, 相比起 j2ee 这个庞大的体系...
  • swifth
  • swifth
  • 2006年11月19日 18:04
  • 1350

jive中的设计模式

Jive 中的设计模式 (Design Pattern)关键字: Jive, Design Pattern.时间: 2001-4-1摘要:Jive 是一个开放源码的论坛项目, 也就是我们所常见的 BB...
  • arielxp
  • arielxp
  • 2004年09月17日 08:01
  • 1834

Jive 源代码探索

 Jive 源代码探索jive源代码的探索一直是很多朋友所在从事的,虽然有很多人对jive本身也提出了不同的批评意见,但是个人认为学习jive的源代码是走向java编程成熟的一条捷径,由于本人水平有限...
  • GFDVAn
  • GFDVAn
  • 2004年11月12日 16:29
  • 1696

Jive论坛简介

学习Jive源程序,可以更好的理解和应用设计模式,学习Java必须读懂两套源代码,第一个就是Jive 第二个是Sun的宠物店Pet Store.Jive论坛的优点是由于采用缓冲机制,可以承受巨大访问量...
  • smlweb
  • smlweb
  • 2005年01月07日 12:03
  • 5636

Jive学习_1

    Jive,相信学习java的人类都不会陌生,最起码是有所耳闻的。有句话最能形容Jive的影响力:面向对象和设计陌生是Java的内功,而Jive无疑是九阴真经。    下面就简单介绍一下Jive...
  • tuoxie007
  • tuoxie007
  • 2008年04月07日 01:34
  • 250

JiveForumsPro4

 JiveForumsPro4             在读webwork文的时候,看到了,JiveForumsPro4,也就从网上找一找,也从官方上找了一些资料,       还不错吧,也是一个开源...
  • dingdangxiaoma
  • dingdangxiaoma
  • 2007年12月21日 13:54
  • 505

bbs源码分析 之 jive源码研究

前言 整体结构概叙 AbstractFactory模式和可扩展性 Proxy模式和权限控制 Decorator模式和过滤器 Iterator模式和论坛...
  • swifth
  • swifth
  • 2006年11月19日 18:06
  • 2175

开源项目JiveJdon3.0(支持国产开源项目)

   真正的、彻底的、完全面向对象软件系统。是目前国内领先的、高水准开源论坛系统。    JiveJdon 3.0是按照20...
  • hdy007
  • hdy007
  • 2007年01月11日 14:10
  • 2624

Jive的缓存机制

   Jive的缓存机制Jive论坛的一个主要特点就是其性能速度快,因此很多巨大访问量的网站都采用了Jive论坛。这些都是由于Jive采取了高速缓存机制。缓存(Cache)机制是提高系统运行性能必不可...
  • ksharer
  • ksharer
  • 2009年05月16日 21:35
  • 476

jive2.5论坛Cache处理之更新---增加用户权限

    最近有些网友看了jive论坛中的增加用户权限的cache的一些处理过程觉得很迷惑,现将其做一个总结。    jive论坛的权限是分几个级别的:匿名用户,注册用户,具体的用户。匿名用户和注册用户...
  • saltern
  • saltern
  • 2006年09月23日 16:23
  • 543
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jive笔记7 -- Jive的硬伤
举报原因:
原因补充:

(最多只允许输入30个字)