AOP下的权限控制实现
http://tech.ddvip.com 2006年11月21日 社区交流
本文详细介绍AOP下的权限控制实现
权限控制的应用程序实现
对于权限管理的做法,在WEB实现上,有以下几种:
⑴ 利用Filter,对所有进入的URI进行解析,并取得当时Session中的User信息,然后通过RBAC的机制,将此链接需要的权限与用户拥有的权限进行比较,然后进行相应的处理。这种做法有很多好处:简单,容易实现,并且对系统侵入性也不强。这里URL就是RBAC中的资源了。这样做的缺点是所有对数据的操作必须通过URL来体现,这一点在现代的程序中不太好实现。如果采用Struts, XWork或者Tapestry,采用同一个URL(浏览器看来)进行处理多项任务已不是什么稀奇的事。
⑵ 利用一个BaseServlet(Servlet+Jsp经典模式)或者BaseAction(Struts模式)或者BasePage(Tapestry模式)或者BaseController(SpringMVC模式),对所有的请求先进行过滤进行权限操作,然后再处理。稍微看一下就知道这种模式跟Filter并无本质不同。优缺点同上。
那么,如果要实现更为细致的权限操作,精确到某个方法的权限,典型的做法如下:
public someFunciton() {
//权限判断
User user = context.getUser();
if (user.canExecuteThisFunction()) {
// do the business method
// ...
} else {
throw new PermissionDeniedException();
}
}这种做法能够将权限的粒度控制到具体的业务方法,因此它的控制能力应该是强大的。可以看到,权限判断部分对于每个方法几乎是独立的。
这种在具体功能前加入权限操作检验的实现方式有很多缺点:
⑴ 每个功能类都需要相应的权限检验代码,将程序功能和权限检验混淆在一起,存在紧密的耦合性,扩展修改难度大。
来源:计算机与信息技术 作者:陈景燕 阳国贵 责编:豆豆技术应用
正在加载评论...