AOP与权限控制实现
【IT168 技术文档】
以往在J2EE系统中,访问权限控制系统的实现主要有两种:应用程序实现和J2EE容器实现。
传统的应用程序实现
这是最直接的、传统的一种解决方式,通常是在具体方法前加一个权限判断语句,如下:
public class ForumFactoryProxy extends ForumFactory {
......
public Forum createForum(String name, String description)
throws UnauthorizedException, ForumAlreadyExistsException
{
if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) {
Forum newForum = factory.createForum(name, description);
return new ForumProxy(newForum, authorization, permissions);
}else {
throw new UnauthorizedException();
}
}
......
}
上述代码是Jive论坛中一段创建论坛功能的代码,在创建论坛前,首先进行权限角色检验,如果当前用户是系统管理员,那么可以实现真正的创建。
这种在具体功能前加入权限操作检验的实现方式有很多缺点:
1.每个功能类都需要相应的权限检验代码,将程序功能和权限检验混淆在一起,存在紧密的耦合性,扩展修改难度大。
2.如果类似Jive,以代理模式为每个功能类实现一个相应的代理类,虽然解耦了程序功能和权限检验,但是,从某个角色的权限检验这个切面考虑,涉及具体Proxy类太多,扩展修改难度大。
0
相关文章
