论坛首页 Java企业应用论坛

[转载]实战Acegi

浏览 34227 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-01-05  
最近很多人讨论acegi和通用安全框架的设计,前一段时间我在项目里引入了acegi作为系统的安全框架,实际使用效果很好,基本满足了项目需求。我根据自己的使用经验写了一篇文章:

实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架
原文地址:
http://www.blogjava.net/youlq/archive/2005/12/06/22678.html

希望对大家有所帮助。
   发表时间:2006-01-05  
这个原来是楼住写的,我就是看这个入门的,写写楼主了。。。。。
0 请登录后投票
   发表时间:2006-07-18  
谢谢指点迷津
0 请登录后投票
   发表时间:2006-07-26  
小心的问一句,

ACL的集合后处理会不会造成分页产生虎牙子

各位兄台是如何解决的?
0 请登录后投票
   发表时间:2006-08-02  
liuyifan.com 写道
小心的问一句,

ACL的集合后处理会不会造成分页产生虎牙子

各位兄台是如何解决的?
谢谢楼主,最近有时间,刚好可以看一下
0 请登录后投票
   发表时间:2006-08-02  
如果通过ResultSet分页,产生虎牙是肯定,如果不想产生虎牙,那只有在客户端分页,想想如果有一次有10万条记录需要分页的话,这效率。。。

acegi对于Security Object的权限校验,通过AOP拦截方法并不是很有效,比如,我需要对Order对象进行权限检验(假设张三有权阅读,李四无权阅读),我的业务服务类有这么一个方法:Order getOrder(int orderId),acegi的处理方式是针对调用方法的参数进行检验,但我们实际需要的是针对返回结果的校验,这并不是唯一的特例,实际情况还有很多,所以我感觉,针对实例级的ACL控制,用AOP来处理并不是很现实。
0 请登录后投票
   发表时间:2006-08-02  
balaschen 写道
如果通过ResultSet分页,产生虎牙是肯定,如果不想产生虎牙,那只有在客户端分页,想想如果有一次有10万条记录需要分页的话,这效率。。。

acegi对于Security Object的权限校验,通过AOP拦截方法并不是很有效,比如,我需要对Order对象进行权限检验(假设张三有权阅读,李四无权阅读),我的业务服务类有这么一个方法:Order getOrder(int orderId),acegi的处理方式是针对调用方法的参数进行检验,但我们实际需要的是针对返回结果的校验,这并不是唯一的特例,实际情况还有很多,所以我感觉,针对实例级的ACL控制,用AOP来处理并不是很现实。


楼上兄弟,不敢苟同
个人认为ACL采取的恰恰就是针对返回结果的校验,
<bean id="afterAclRead" class="org.acegisecurity.afterinvocation.BasicAclEntryAfterInvocationProvider">

我想这也是afterAclRead名称的来由,它的decide方法正是对结果返加进行处理的


我想说的是大量数据分页的情况,不可能一次将所有结果都load出来的时候,只好先count(*)后limit的情况下,这种产生虎牙子的情况如何解决?
0 请登录后投票
   发表时间:2006-08-03  
liuyifan.com 写道
balaschen 写道
如果通过ResultSet分页,产生虎牙是肯定,如果不想产生虎牙,那只有在客户端分页,想想如果有一次有10万条记录需要分页的话,这效率。。。

acegi对于Security Object的权限校验,通过AOP拦截方法并不是很有效,比如,我需要对Order对象进行权限检验(假设张三有权阅读,李四无权阅读),我的业务服务类有这么一个方法:Order getOrder(int orderId),acegi的处理方式是针对调用方法的参数进行检验,但我们实际需要的是针对返回结果的校验,这并不是唯一的特例,实际情况还有很多,所以我感觉,针对实例级的ACL控制,用AOP来处理并不是很现实。


楼上兄弟,不敢苟同
个人认为ACL采取的恰恰就是针对返回结果的校验,
<bean id="afterAclRead" class="org.acegisecurity.afterinvocation.BasicAclEntryAfterInvocationProvider">

我想这也是afterAclRead名称的来由,它的decide方法正是对结果返加进行处理的


我想说的是大量数据分页的情况,不可能一次将所有结果都load出来的时候,只好先count(*)后limit的情况下,这种产生虎牙子的情况如何解决?


那假如我要删除一个Object呢 比如:deleteOrder(int orderId)又该怎么处理呢,我想,为了满足acegi的要求,必需先loadObject,然后提供一个deleteOrder(Order order)的方法来删除吧,这是否表示如果我们使用acegi,在编写业务逻辑代码的时候,必须遵循某些潜在的契约,那这种方式对业务层还算透明嘛
0 请登录后投票
   发表时间:2006-08-03  
又仔细思考了一下,要求业务层的方法遵循类似deleteOrder(Order order)形式,而不允许deleteOrder(String orderId)从面向对象编程角度也是可行的。考虑在下一版本的权限控制模型采用acegi来实现 ,对于集合数据过滤后的问题,我也想知道如何解决。
0 请登录后投票
   发表时间:2006-08-03  
对于分页数据过滤后产生的虎牙子,估计是个难题,连IBM都解决不好,我以前在用Lotus Domino开发时,Domnio本身提供了很好的安全机制,但用视图分页时,也有这个问题.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics