CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

请问:我要做一个基于J2EE的权限管理系统,应该怎么样下手?

楼主crystal81gz(学无止境~~~)2006-03-08 10:36:47 在 Java / 框架、开源 提问

如题,这是我的论文方向,感到无从下手,请高手指点 问题点数:100、回复次数:28Top

1 楼xiaobaolove(紫色太阳)回复于 2006-03-08 10:58:41 得分 0

帮你up...  
   
  我也正在写论文!Top

2 楼pdvv(花猫)回复于 2006-03-08 11:24:05 得分 10

1:框架上,需要页面安全访问控制。  
  2:业务上,用户分组、角色、业务权限控制等。Top

3 楼pdw2009(不想做菜鸟)回复于 2006-03-08 11:45:19 得分 0

3个表,用户,角色,权限!!!!!!Top

4 楼ibiswang(神鸟)回复于 2006-03-08 12:04:20 得分 10

基于J2EE的权限管理系统?   即将是论文,我觉得如可由如下几方面入手:  
  1。Java自身的安全管理策略的论述。  
  2。Web   Server访问控制策略的论述。  
  3。web.xml中对于资源访问控制及认证方式的论述。  
  4。基于Servlet   API   Filter机制的论述.  
  5。业务系统权限控制机制的论述及设计(User-Role-Right以及数据权限).  
  6。SSO(单点登录)机制中权限相关论述.  
   
  但愿有用。Top

5 楼zeq258(周二强)回复于 2006-03-08 13:04:51 得分 20

我觉得   得从两个方面下手,  
   
  第一,正如楼上所说,需要创建那几个表,这个主要用于对不同的用户配置不同的连接,  
  也就是说,如果你具有该权限,你的页面上才能有这个连接,否则,没有这个连接!  
   
  光这样做是不够的。  
  第二,根据,用户的级别,设置用户查询数据库的权限:  
  比如说:系统管理员:select   *   from   user    
                  操作员:select   *   from   user   where   ........  
  在这里进行控制,也就是说,如果你直接在地址栏输入了你没有权限的模块的地址,但是实际你进去之后还是不能操作的,因为就没有满足查询条件的记录,当然,这只是对查询进行控制,同样,对于其他操作,如添加,删除,你也可以这样控制。  
   
  一般的系统,只要这两个方面进行控制,基本就可以满足其安全方面的要求了。  
  Top

6 楼crystal81gz(学无止境~~~)回复于 2006-03-08 21:10:06 得分 0

upTop

7 楼crystal81gz(学无止境~~~)回复于 2006-03-09 08:25:20 得分 0

UPTop

8 楼wmzsl(王明哲)回复于 2006-03-09 08:49:07 得分 0

顶!Top

9 楼crystal81gz(学无止境~~~)回复于 2006-03-10 08:58:08 得分 0

感谢各位的指点~~  
  J2EE很庞大,不知道在工具选取方面要注意些什么呢?Top

10 楼wangdongzjk(东)回复于 2006-03-11 00:18:57 得分 0

rbac   ,aclTop

11 楼iori_powermax()回复于 2006-03-11 00:37:53 得分 10

我最近在做一个CMS,核心模块也包含权限管理  
  在数据库设计方面我用的是CASE   Studio   2  
  core_authority操作表  
  core_component系统模块表(你的权限管理应该也是基于不同模块的)  
  core_parameter系统参数表  
  core_role系统角色表  
  core_role_power角色权限表  
  core_user系统用户表  
  core_user_role用户角色映射表  
   
  开发工具我用的是Tomcat5.5.9+MySQL+Eclipse+Hibernate2.1+Struts1.2.8  
   
  另外最近发现HibernateSychornizer自动生成的_baseRootDAO.java有些细节上的问题,不能直接用,需要手工改一下Top

12 楼yingtju(蚂蚁)回复于 2006-03-11 11:33:58 得分 0

看看acegi吧,tomcat也有验证授权机制  
  基本就是url匹配角色,角色对应权限Top

13 楼crystal81gz(学无止境~~~)回复于 2006-03-14 11:09:46 得分 0

如果我下载了一个开源代码,只是一个.jar文件。我该怎么使用呢?Top

14 楼tomuno(特别行动组)回复于 2006-03-14 11:19:27 得分 20

首先要明确需求,认识系统里到底有多少可以划分出来的权限  
   
  权限控制模块的设计应分为3   个方面:权限列表结构设计、权限管理机制设计和运行控制机制设计。  
  权限列表结构设计属于系统设计数据结构设计层次,是权限控制机制代码设计的基础。  
  其设计可采用权限字段化和权限数值化两种模式。  
  对用户权限的管理包括授权(Grant)和撤消(Revoke)   两类操作。  
  运行控制机制是指根据用户权限将其操作限制在权限允许的范围内,运行控制机制的设计是业务分工权限化管理的具体实施阶段。  
       1.   隐藏功能型(Invisible   Style)  
       该类型控制方式是只对用户提供其权限允许的操作,隐藏无权执行的操作调用(选单项或命令按钮)。这种控制方式的优点是用户操作界面与其业务分工相对应,无多余的业务内容影响其操作视野,故实用性强,而且非授权操作的不可见性在一定程度上提高了系统的安全性。  
  2.   禁止功能型(Disable   Style)  
       该类型控制方式是只激活(Enable)用户权限对应的操作调用(选单项或命令按钮),禁止(Disable)无权执行的操作调用(选单项及命令按钮)。这种控制方式的优点是能够全面体现系统所具有的功能,使用户对系统所能进行的操作有了全面的了解,在主观上给用户以系统的设计完全符合其要求  
  的满足感;但其缺点是操作界面与用户业务分工不一致,操作界面略显混乱,更重要的是系统功能的全部暴露容易给不法分子指定攻击目标,威胁系统的安全运行。  
  3.   触发检查型(Triggering   Check   Style)  
       该类型的运行控制方式是用户一旦选择某项操作则立刻激活权限检查,决定其是否有权执行该项操作,若有则执行该操作,否则系统将拒绝执行。  
       实现过程:将权限检查放入功能调用模块代码的首部,由其决定是否执行该操作。  
   
  权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真  
  who   how   to   do   what?  
   
    1.表单式认证,这是常用的,但用户到达一个不被授权访问的资源时,Web容器就发出一个html页面,要求输入用户名和密码。  
    2.一个基于Servlet   Sign   in/Sign   out来集中处理所有的Request,缺点是必须由应用程序自己来处理。  
    3.用Filter防止用户访问一些未被授权的资源,Filter会截取所有Request/Response,  
    然后放置一个验证通过的标识在用户的Session中,然后Filter每次依靠这个标识来决定是否放行ResponseTop

15 楼crystal81gz(学无止境~~~)回复于 2006-03-14 11:30:27 得分 0

如果我下载了一个开源代码,只是一个.jar文件。我该怎么使用呢?Top

16 楼jscmf(cx)回复于 2006-03-14 13:15:21 得分 0

自动生成JAVA+strust和.Net代码.  
  自动生成MS   SQL2000   Server存储过程.  
  http://60.191.0.85/cx/download/Java_AutoCode.rar  
  Top

17 楼zcolin(逍遥花生)回复于 2006-03-14 13:54:52 得分 0

自己写的话,基于Spring的aop思想,利用拦截器  
  或者可以直接用acegiTop

18 楼crystal81gz(学无止境~~~)回复于 2006-03-14 17:17:36 得分 0

http://60.191.0.85/cx/download/Java_AutoCode.rar  
  无法打开该页面Top

19 楼Y04069(sunshining04)回复于 2006-03-14 21:47:32 得分 0

偶也在做与这方面相关的课题......................Top

20 楼jfy3d(剑事 http://www.migti.com)回复于 2006-03-15 09:19:10 得分 0

Acegi  
   
  http://www.blogjava.net/youlq/archive/2005/12/06/22678.html  
  Top

21 楼pbnow(每天都是起点)回复于 2006-03-15 09:54:21 得分 10

目前权限管理有如下几种技术  
  1。RBAC(Role   Based   Access   Control):基于角色的访问控制,这种思想下,role是系统核心,它是用户(user)和资源(系统开发给用户的可用资源),这里user是一个抽象概念,你可以扩展细化,资源,简单的说,比如你web资源的url,对这种资源,一般情况下你还要加多访问控制,比如各种操作(CRUD等),这种模型实现相对简单,也很成熟,很多系统的权限控制都是这样实现的  
  2。ACL(Access   Control   List)访问控制列表;window的权限模型,可以查相关资料了解  
  3。两种模式的混合  
   
  对一个学生,我觉得能够把经典的rbac实现的好就足够了  
  Top

22 楼crystal81gz(学无止境~~~)回复于 2006-03-17 10:51:31 得分 0

不知道哪位高手可以推荐几本关于权限设计方面的书,最好还有实例,可以学习和参考一下。感谢感谢!!!Top

23 楼crystal81gz(学无止境~~~)回复于 2006-03-20 10:15:13 得分 0

不知道哪位高手可以推荐几本关于权限设计方面的书,最好还有实例,可以学习和参考一下。感谢感谢!!!Top

24 楼keanfly(fly)回复于 2006-03-20 16:44:22 得分 0

现在还有人在用hibernate2.1?Top

25 楼crystal81gz(学无止境~~~)回复于 2006-03-21 10:32:20 得分 0

不知道哪位高手可以推荐几本关于权限设计方面的书,最好还有实例,可以学习和参考一下。感谢感谢!!!  
  Top

26 楼Jolestar(叶明)回复于 2006-03-22 02:18:04 得分 0

恩,受益非浅,望高手们再说的细致一点.  
  个人感觉一个复杂的cms系统,就权限控制比较麻烦.  
  sping的aop思想很好,但具体作起来缺乏实例性的东西参考.  
  界面实现上如果比较复杂的话用jsf最好了.  
  jsf   in   action这本书里有个比较经典的例子.Top

27 楼Jolestar(叶明)回复于 2006-03-22 04:48:11 得分 0

Acegi  
   
  http://www.blogjava.net/youlq/archive/2005/12/06/22678.html  
   
  恩,看了jfy3d(剑事)   推荐的这篇文章和实例很受启发,建议大家都看看.  
  一直说找不到sping的aop实现用户权限限制的例子,这个例子就很好.Top

28 楼Jolestar(叶明)回复于 2006-03-22 04:51:11 得分 20

这儿还有篇文章.当初保存文章时没有把原地址保存.也是csdn上的文章.  
   
   
  Spring   AOP实际应用一例           选择自   pbMaster   的   Blog  
     
   
   
          在WEB开发中,用户对网页的访问权限检查是一个重要的环节。以STRUST为例,我们需要在Action的excute方法中编写相关的代码(一般是调用基类的函数),也很显然,在每个Action中这是一种重复劳动。  
  如果我们在excute运行之前,能够自动去调用基类的权限检查函数,这无疑是个好的解决办法。AOP就为我们提供了这样一种解决方法。  
   
          下面以一个简化的实例介绍实现的办法。  
   
          首先我们做一个接口:  
     
   
  public   interface   CheckInterface   {  
      public   abstract   void   check(String   name);  
      public   abstract   void   excute(String   name);  
  }  
   
   
  再做一个基类:  
  public   abstract   class   BaseClass   implements   CheckInterface   {  
  public   BaseClass()   {  
  }  
  public   void   check(String   name){  
  if   (name.equals("supervisor"))  
  System.out.println("Check   Pass!!");  
  else   {  
  System.out.println("No   access   privilege!   Please   do   sth.   else!");  
  }  
  }  
  }  
  再做一个测试类:  
  public   class   ExcuteClass   extends   BaseClass   {  
  public   ExcuteClass()   {  
  }  
   
  public   void   excute(String   name){  
  System.out.println("Excute   here!"+name);  
  }  
  }  
   
  好了,下面做一个通知类(Advice):  
  import   org.springframework.aop.MethodBeforeAdvice;  
  import   java.lang.reflect.Method;  
  import   org.apache.log4j.Logger;  
   
  public   class   BeforeAdvisor   implements   MethodBeforeAdvice   {  
  private   static   Logger   logger=Logger.getLogger(BeforeAdvisor.class);  
  public   void   before(Method   m,   Object[]   args,   Object   target)   throws   Throwable   {  
  if   (target   instanceof   CheckInterface){  
  logger.debug("Is   Instanceof   CheckInterface!!!");  
  CheckInterface   ci=(CheckInterface)target;  
  ci.check((String)args[0]);  
  }  
  }  
  }  
  其中重要的before方法的参数:Object   target传入的通知的对象(即测试类的接口),Method   m,   Object[]   args分别是该对象被调用的方法和参数。  
  我们再来作spring   bean定义xml文件:  
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <!DOCTYPE   beans   PUBLIC   "-//SPRING//DTD   BEAN//EN"   "http://www.springframework.org/dtd/spring-beans.dtd">  
  <beans>  
  <description>Spring   Quick   Start</description>  
  <bean   id="MyAdvisor"   class="com.wysm.netstar.test.springaop.BeforeAdvisor"/>  
   
  <bean   id="myPointcutAdvisor2"   class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">  
  <property   name="advice">  
  <ref   local="MyAdvisor"   />  
  </property>  
  <property   name="patterns">  
  <list>  
  <value>.*excute.*</value>  
  </list>  
  </property>  
  </bean>  
   
  <bean   id="checkInterface"   class="com.wysm.netstar.test.springaop.ExcuteClass"/>  
   
  <bean   id="myCheckClass"   class="org.springframework.aop.framework.ProxyFactoryBean">  
  <property   name="proxyInterfaces">  
  <value>com.wysm.netstar.test.springaop.CheckInterface</value>  
  </property>  
  <property   name="target">  
  <ref   local="checkInterface"   />  
  </property>  
  <property   name="interceptorNames">  
  <value>myPointcutAdvisor2</value>  
  </property>  
  </bean>  
   
  </beans>  
  这个定义文件指明了ExcuteClass为监视对象,它的excute方法被执行的时候,BeforeAdvisor将被调用。  
   
  最后是测试类:  
  import   junit.framework.TestCase;  
  import   org.springframework.context.ApplicationContext;  
  import   org.springframework.context.support.FileSystemXmlApplicationContext;  
   
  public   class   SpringTestCase2   extends   TestCase   {  
  CheckInterface   test=null;  
   
          protected   void   setUp()   throws   Exception   {  
  super.setUp();  
  ApplicationContext   ctx=new   FileSystemXmlApplicationContext("src/com/wysm/netstar/test/springaop/aoptest.xml");  
  test   =   (CheckInterface)   ctx.getBean("myCheckClass");  
  }  
   
          protected   void   tearDown()   throws   Exception   {  
  super.tearDown();  
  }  
  public   void   testExcute(){  
  test.excute("supervisor");  
  }  
  }  
  Top

相关问题

  • 我要学JAVA,从那里下手,学vj++ 还是j++builder
  • 系统权限
  • 权限操作
  • DCOM、NTService、权限
  • 文件权限
  • 权限问题?
  • 权限问题
  • 权限配置!
  • 权限设置?
  • shutdown权限

关键词

  • .net
  • j2ee
  • 控制
  • 用户
  • 系统
  • 模块
  • 执行
  • aop
  • 角色
  • 代码

得分解答快速导航

  • 帖主:crystal81gz
  • pdvv
  • ibiswang
  • zeq258
  • iori_powermax
  • tomuno
  • pbnow
  • Jolestar

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo