老妖的博客
现实的中没有几个人能够真为对方去死,甚至山盟海誓很快就会在金钱面前变的微不足道,这才是生活。没有永远的爱,除了你的父母对你,当然也就没有永远的恨,更没有永远的痛,时间是最好的治疗大师,它会很快抚平你心灵上累累的伤痕。很多年以后你想起来时,那些在你生命中汹涌来往的人群至多是个模糊的影子或者毫无意义的名字
posts - 105,  comments - 171,  trackbacks - 0
 1 package com.rdk.security.intercept.web;
 2 
 3 import net.sf.acegisecurity.intercept.web.FilterInvocationDefinitionSource;
 4 import net.sf.acegisecurity.intercept.web.AbstractFilterInvocationDefinitionSource;
 5 import net.sf.acegisecurity.ConfigAttributeDefinition;
 6 import net.sf.acegisecurity.SecurityConfig;
 7 
 8 import java.util.Iterator;
 9 
10 import com.rdk.security.persistence.ActionDao;
11 import com.rdk.security.domain.Action;
12 import com.rdk.security.domain.RoleAction;
13 import com.rdk.core.NullParameterException;
14 import org.springframework.dao.IncorrectResultSizeDataAccessException;
15 
16 /**
17 * Clase encargada de implementar la propiedad ObjectDefinitionSource para la clase de acegi
18 * FilterSecurityInterceptor esta implementacion le entrega el objeto ConfigAttributeDefinition
19 * con los roles permitidos a acceder a la url pasada como parametro.
20 * User: Rodney Gallart (rodney@radikalsystems.com)
21 * Date: Jan 25, 2005
22 * Time: 4:20:04 PM
23 */
24 public class DaoBasedFilterInvocationDefinitionSource
25 extends AbstractFilterInvocationDefinitionSource
26 implements FilterInvocationDefinitionSource {
27 
28 private ActionDao actionDao;
29 /**
30 * Implementacion dao de los objetos de tipo Action
31 @param actionDao
32 */
33 public void setActionDao(ActionDao actionDao) {
34 this.actionDao = actionDao;
35 }
36 
37 /**
38 * A este metodo se le pasa como parametro la url que se quiere acceder y devuelve el objeto
39 * ConfigAttributeDefinition donde vienen los roles que pueden acceder a esa url
40 *
41 * ConfigifAttributeDefinition contiene una lista de objetos que implementan la interfaz ConfigAttribute
42 * puede ser SecurityConfig (Roles como String)
43 *
44 * Ahora con la url pasada como parametro debe hacerse una busqueda en una lista de acciones cuando se encuentre
45 * la accion a la cual pertenece la url entonces se devuelve la lista de Roles
46 * TODO Analizar la posibilidad de implementar un mecanismo de cache Mapa(url, Action) y bajo que condiciones vaciarlo
47 @param url Pasada como paremetro para buscar sus roles permitidos
48 @return ConfigAttributeDefinition
49 */
50 public ConfigAttributeDefinition lookupAttributes(String url) {
51 if (url == null)
52 throw new NullParameterException("Parametro url null");
53 try {
54 url = url.toLowerCase();
55 url = url.substring(1);
56 if (url.contains("&"))
57 url = url.substring(0, url.indexOf("&"));
58 Action act = actionDao.findByUrl(url);
59 return obtainRolesInConfigAttributeDefinitionObject(act);
60 }
61 catch (IncorrectResultSizeDataAccessException ex) {
62 return null;
63 }
64 }
65 
66 /**
67 * En este metodo se van a obtener los roles asociados a la accion y se va a crear el
68 * objeto de tipo ConfigAttributeDefinition con la lista de objetos SecurityConfig
69 @param act
70 @return
71 */
72 private ConfigAttributeDefinition obtainRolesInConfigAttributeDefinitionObject(Action act) {
73 ConfigAttributeDefinition cad = new ConfigAttributeDefinition();
74 Iterator it = act.getRoles().iterator();
75 while(it.hasNext()) {
76 RoleAction ra = (RoleAction) it.next();
77 SecurityConfig sc = new SecurityConfig(ra.getRole().getName());
78 cad.addConfigAttribute(sc);
79 }
80 return cad;
81 }
82 
83 public Iterator getConfigAttributeDefinitions() {
84 return null;
85 }
86 
87 }
88 
posted on 2005-11-14 01:58 老妖 阅读(1986) 评论(4)  编辑  收藏 所属分类: spring

FeedBack:
# re: acegi扩展AbstractFilterInvocationDefinitionSource
2005-11-14 13:59 | pikachu
将url和权限的对应关系存放在数据库中??  回复  更多评论
  
# re: acegi扩展AbstractFilterInvocationDefinitionSource
2005-11-14 14:51 | 老妖
恭喜你,答对了  回复  更多评论
  
# re: acegi扩展AbstractFilterInvocationDefinitionSource[未登录]
2007-01-29 18:33 | apple
import com.rdk.security.persistence.ActionDao;
import com.rdk.security.domain.Action;
import com.rdk.security.domain.RoleAction;
这三个包分别指什么呢?初学,请详细说一下可以吗?  回复  更多评论
  
# re: acegi扩展AbstractFilterInvocationDefinitionSource[未登录]
2007-01-29 18:34 | apple
此外,若用户新添加了URL,那是不是还要重新启动服务器?  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2005年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

随笔分类(48)

随笔档案(104)

好友链接

我的豆瓣

积分与排名

  • 积分 - 218798
  • 排名 - 256

最新评论

阅读排行榜