当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

AOP下的权限掌握实现[Java编程]

赞助商链接



  本文“AOP下的权限掌握实现[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

OOP利用开辟面对的问题

面向对象技术很好地办理了软件系统中角色划分的问题.借助于面向对象的解析、计划和实现技术,开辟者可以将问题范畴的“名词”转换成软件系统中的对象,从而很自然地完成从问题到软件的转换.

但是,问题范畴的某些需求却恰好不是用这样的“名词”来描写的.比方碰到这样的问题:需求对系统中的某些办法举行权限查验,这种需求权限查验的办法散布在40多个类中.面对这种需求,应当怎么办呢?最直接的办法就是:成立一个起类(或接口),将权限查验的功效放在此中,并让全部需求权限查验的类担当这个起类(或接口).假如这个需求是后期提出的.需求改正的地方就会分离在40多个文件中.这样大的改正量,无疑会增添出错的概率,并且加大系统保护的难度.

人们熟习到,传统的程序常常表现出一些不能自然地合适单个程序模块大概几个精密相关的程序模块的行为比方权限查验、日记记录、对上下文敏感的错误处理、性能优化以及计划情势等等、我们将这种行为称为“横切关注点(crosscuttingconcern)”,因为它超越了给定编程模子中的典型职责边界.假如利用过用于横切关注点的代码,您就会知道贫乏模块性所带来的问题.因为横切行为的实现是分离的,开辟人员发现这种行为难以作逻辑思维、实现和更改.

AOP的基本思惟

AOP是Aspect Oriented Programming的缩写,意思是面向方面编程,一种新兴的编程技术.AOP实际是GoF计划情势的持续,计划情势孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现.它可以办理OOP和历程化办法不可以很好办理的横切(crosscut)问题,如:事件、安全、日记等横切关注.当将来系统变得越来越复杂,横切关注点就成为一个大问题的时刻,AOP便可以很轻松的办理横切关注点这个问题.

图 1 把模块作为一批关注点来实现

普通,为满意整个企业利用某方面得需求,开辟者(架构师)需求整理出系统得关注点.图 1形象地描写了关注点,它可以从AOP Aspect角度对待系统.比方,长期化、日记、利用的业务逻辑普通被认为是利用需求办理的问题.因此,他们普通作为关注点对待.从整个系统角度考虑,它常常是由大量的关注点构成的.

我们把AOP看做是OOP的持续,而不是竞争对手.OOP在普通的场所下工作得很好,但在特定的范畴里却有所欠缺:举例来说,假如我们必须为多个对象和办法利用相同的事件行为,我们需求将一样的代码剪切/粘贴到每一个办法里.AOP让我们可以把这类问题封装到方面(aspect)中,从而更好地实现模块化.AOP定义了“切入点”(pointcut)的概念,让开辟者可以从另一个角度来考虑程序的构造,从而补偿了OOP的某些缺陷:假如需求对一组办法施加横切的行为,就应当拦阻这些办法.

在J2EE利用开辟中,我们主要用到AOP的拦阻(interception)本领,它为我们供应了“在任何对象的办法调用前/后加入自定义行为”的本领,这使得我们可以处理企业利用中的横切(crosscutting)关注点(即:同时作用于多个对象的关注点),并且仍旧保持强范例(不需求改变办法签名).

权限掌握的利用程序实现

关于权限管理的做法,在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();
  }
}


  以上是“AOP下的权限掌握实现[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • AOP下的权限掌握实现
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .