`
dazuiba
  • 浏览: 130820 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jive中的权限管理

阅读更多
比如要createForum,那么jive就会这么做:
大体上的思路是,用代理模式,本来ForumFactory 是没有权限的相关方法和属性的,那么,就把这些功能代理给ForumFactoryProxy ,这样就把任务分开了!


public class ForumFactoryProxy extends ForumFactory {
  ......
  public Forum createForum(String name, String description);
    throws UnauthorizedException, ForumAlreadyExistsException
  {
    if (permissions.get(ForumPermissions.SYSTEM_ADMIN);); {
      Forum newForum = factory.createForum(name,   description);;
      return new ForumProxy(newForum, authorization, permissions);;
    }else {
      throw new UnauthorizedException();;
    }
  }
  ......
}


就是这一句:
 if (permissions.get(ForumPermissions.SYSTEM_ADMIN);); {
             //~~~~~~~~~
       }else {
      throw new UnauthorizedException();;
    }


其中permissions是该代理类的一个属性,是在ForumFactory.getInstance中创建变量的最后一个参数。
该参数是这么得到的:

dbforumFactory.getPermissions(Authorization authorizaton);   {
      
        return permissionsManager.getFinalUserPerms(-1, userID);;
}


所以,得到一个权限是和用户的userid联系起来的,而userid在系统中是由 Authorization类来包装的
所以在
permissionsManager.getFinalUserPerms(-1, userID);;
中,应该查询到数据库层,来对用户的权限进行进一步的处理!
在数据库中,权限相关的表格如下:
    UserPerm  (
                                 forumID
                                 userID 
                                 userType 
                                 permission 
                                 );;

              Userid(userType ,userID );
             两个表是多对多关系


 StringBuffer sql = new StringBuffer(
                "SELECT DISTINCT permission FROM bisUserPerm WHERE "
            );;


            if (forumID == -1); {
                sql.append("forumID IS NULL AND ");;
            }
            else {
                sql.append("forumID=");.append(forumID);.append(" AND ");;
            }
			
			
            if (userID == -1); {
                sql.append("userID IS NULL and userType=");;
                sql.append(BisGlobals.ANONYMOUS);;
            }
            else if (userID == 0); {
                sql.append("userID IS NULL AND userType=");;
                sql.append(BisGlobals.REGISTERED_USERS);;
            }			
            else {
                sql.append("userID=");.append(userID);.append(" AND userType=");;
                sql.append(BisGlobals.USER);;
            }
            ResultSet rs = stmt.executeQuery(sql.toString(););;
            while(rs.next();); {
                int newPerm = rs.getInt(1);;
              //!!!~~~~~
                permissions[newPerm] = true;
            }
        }
return new ForumPermissions(permissions);;

返回了一个包装了权限数组的类ForumPermissions

数组permissions中各个元素的意义如下:
boolean read;                      p[0]
boolean systemAdmin;        p[1]
boolean forumAdmin;          p[2]
boolean userAdmin;              p[3]
boolean groupAdmin;          p[4]
boolean moderateThreads; p[5]
boolean createThread;        p[6]
boolean createMessage;      p[7]
boolean moderateMessages; p[8]

比如要添加一个对各个论坛都有管理员权限systemAdmin
insert into UserPerm(forumID,userID,userType,permission)
              values (NULL,1,3,1);
其中第三位userType有以下三种:
匿名用户,游客,注册用户
分别是 11 ,12, 3

既然权限都创建了,下面权限的检查就不是一件难事了~~;
//就本例来说,创建论坛当然要管理员的权限,所以代码如下:
permissions.get(ForumPermissions.SYSTEM_ADMIN););{
 if (type < 0 || type > 8); {
            return false;
        }
        return values[type];
}

下一篇讨论关于切面编程的权限控制:AOP权限控制技术
分享到:
评论

相关推荐

    java学习必学系统--jive

    5. **安全性与权限管理**:在企业环境中,安全性和权限控制至关重要。理解Jive的用户认证、授权机制,以及如何设置和管理用户角色,是确保系统安全的基础。 6. **性能优化与部署**:在实际生产环境中,了解如何优化...

    Jive论坛1.2.4版

    可通过Web管理界面动态设定论坛资源的用户访问权限。 论坛数据导出,可通过Web管理界面将论坛数据以树形结构导出到XML文件, 方便Web Services等拓展应用。 论坛版主功能,可设定论坛版主独立管理功能。 积分...

    Jive论坛

    **Jive Web管理**是Jive论坛的一个关键组成部分,它提供了全面的后台管理系统,允许管理员进行用户管理、内容监控、权限设置、论坛配置等一系列操作。Web管理界面通常具有直观的图形用户界面,使得非技术背景的管理...

    最早最经典的Jive论坛开源 源码

    Jive的用户认证和权限管理是另一个值得关注的点。它实现了基于角色的访问控制(RBAC),允许管理员定义不同的角色,并为每个角色分配特定的操作权限。这不仅确保了用户的安全,也为论坛的管理提供了灵活性。此外,...

    JIVE论坛与设计模式

    JIVE中的用户权限管理,通过装饰器可以动态添加或移除用户的操作权限。 5. **适配器模式**:将不兼容接口的对象转换为可一起工作的接口。比如,将不同来源的数据源(如RSS、API)适配成统一的论坛消息格式。 6. **...

    Jive论坛源码下载

    可通过Web管理界面动态设定论坛资源的用户访问权限。 论坛数据导出,可通过Web管理界面将论坛数据以树形结构导出到XML文件, 方便Web Services等拓展应用。 论坛版主功能,可设定论坛版主独立管理功能。 积分功能...

    Jive--SourceFile

    在这里,我们可以看到Jive如何实现用户管理、权限控制、消息系统、论坛等功能。通过阅读和理解这些源码,Java开发者可以提升对Spring框架、RESTful API设计、多线程编程以及安全性等方面的理解。 4. **build**: ...

    Jive源代码.zip

    源代码中的JdonFramework是Jive的重要组成部分,这是一个轻量级、高效的框架,用于构建可扩展和高性能的Web应用程序。JdonFramework的设计理念是“简洁、灵活”,它提供了一种模块化的方法来组织和管理应用的组件,...

    Jive论坛原代码.rar

    在用户管理中,Jive论坛可能采用了策略模式,为不同类型的用户提供不同的服务策略,如普通用户、管理员、版主等。此外,可能会用到代理模式,为用户操作提供缓存或者安全过滤等功能。 在论坛版块和主题发布部分,...

    jive.chm

    &lt;br&gt; 权限设计 1 权限系统概要 2 关于权限设计方面的问题 3 关于用户角色权限管理一点想法 4 关于权限系统的设计 &lt;br&gt; 缓存系统 1 剖析Jive的缓存机制 ...

    jive 2.1.1

    在Jive的实现中,单例模式可能被用来管理全局唯一的实例,例如数据库连接池或配置对象。这种模式确保一个类只有一个实例,并提供一个全局访问点,从而避免了资源浪费和管理复杂性。 其次,“工厂模式”也是软件设计...

    jive文档

    特别是“权限管理”这一标签,意味着文档将详细阐述如何在Jive环境中设置和控制用户访问权限。 在Jive中,权限管理是确保信息安全和团队协作顺畅的关键环节。这涉及到角色定义、用户组、内容可见性以及操作权限等多...

    Jive论坛分析_完整版

    - `Authorization`:表示授权管理。 - `Query`:用于数据查询。 #### 4. 面向接口编程 - **实现方式**:Jive中的所有核心接口都有相应的数据库实现,例如`DbForum`、`DbForumMessage`等。这种方式使得系统能够...

    Jive学习资料

    本篇将基于"Jive学习资料"这一主题,深入探讨Jive的核心概念、主要功能、使用技巧以及在实际工作中的应用。 **一、Jive概述** Jive软件是企业级的社交协作平台,它整合了社交媒体的功能,如即时通讯、博客、论坛、...

    jive论坛tomcat版本源码

    5. 安全性:提供权限管理,可以设置不同角色(管理员、版主、普通用户等)的权限,确保信息安全。 Apache Tomcat在其中的角色: 1. 应用服务器:Tomcat是Java EE中的Servlet和JSP容器,负责解析HTTP请求,执行Java...

    jive源代码

    5. **社交网络架构**: Jive源代码揭示了社交网络平台的核心设计,包括用户身份管理、消息传递、内容发布和权限控制等核心模块。 6. **API与插件系统**: Jive通常提供API(应用程序接口),使得开发者可以扩展其功能...

    最早最经典的jive论坛源代码

    4. **安全性**:Jive论坛的源码中包含了身份验证、授权、防止SQL注入和XSS攻击的实现,这些都是Web开发中必不可少的安全措施。通过源码分析,可以了解到如何在Java Web应用中实现用户认证和授权。 5. **社区功能...

    Jive论坛与Spring框架.doc

    在Jive中,DbForumFactory负责加载特定的JavaBeans,而ForumFactoryProxy引入了权限控制这一横向切面。Spring框架通过AOP来实现类似的切面逻辑,使得开发者可以专注于业务逻辑,而不必关心横切关注点,如日志、事务...

    Jive Forum 系统完整分析

    Jive Forum 可能使用了Spring Security或者Apache Shiro等安全框架,实现了用户身份验证、权限控制及会话管理。 4. **论坛功能** - **话题与帖子**:用户可以创建新话题,发布帖子,并且对已有话题进行回复。 - *...

Global site tag (gtag.js) - Google Analytics