技术开发 频道

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
相关文章