请教项目中如何运用acegi

08-09-08 liuhu2967
有这样一个需求:

不同的用户登陆近来看到的内容是不同的,比如超级管理员能看到所有的栏目 而普通用户只能看到超级管理员为其所设置的栏目,比如超级管理用为用户user1设置了只有A,B,C3个栏目的权限,当user1用户登陆近来只后就只能看到A,B,C3个栏目,超级管理用为用户user2设置了有D,E2个栏目的权限,user2用户登陆后就只能看到D,E2个栏目,另外假如用一个页面的URL是http://localhost/page.jsp?id=1,而该页面只有超级管理员user1用户有权限访问,而要如何避免user2用户直接输入http://localhost/page.jsp?id=1这个地址进行访问, 请问用ACEGI怎么实现,我了解了ACEGI的一些基本的东西,我只知道可以基于URL的安全控制, 但向下面这种情况:user1用户有http://localhost/page.jsp?id=1页面的权限,而user2用户有http://localhost/page.jsp?id=2页面的权限,这样的情况就不好配置了吧

              

1
freebox
2008-09-08 15:51
第一个问题,Acegi提供标签来实现资源显示:

<security:authorize ifAllGranted="ROLE_ADMIN">

ifAllGranted:must have all authorities<br/>

ifAnyGranted:at least have one authority<br/>

ifNotGranted:must have never of authorities<br/>

</security:authorize>

第二个问题:

拥有ROLE_ADMIN权限的url就是http://localhost/page.jsp?id=1

其它url权限是ROLE_USER可以用通配符*表达

liuhu2967
2008-09-08 17:35
这样是不行的 显示的数据是要根据用户的权限来的 栏目数据是保存在数据库中的,比如总共有500个栏目 用户A只要3个栏个的操作权限 总不是说把所有栏目先查出来,再用ACEGI提供的标签隐藏没有权限的吧

第2个问题我用*通配符起不了作用吧 URL相同知识参数不同 不同的参数对应只能有相应的用户访问

freebox
2008-09-08 18:24
那这个就得用资源访问控制了,细化到具体的领域对象,对这部分没有深入研究,但是我知道acegi是一定能够实现的,曾在springside中看过类似的东西。

第二个问题传递参数权限控制可以推迟到方法执行时,用方法权限控制来管理,我一般都做在方法这个层次,没有更细到领域对象。

猜你喜欢