積累,創(chuàng)造,分享!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            25 Posts :: 13 Stories :: 26 Comments :: 0 Trackbacks
          權(quán)限控制是每個項(xiàng)目必不可少的一塊。在最近的一個MVC模式(Struts)的實(shí)踐當(dāng)中,在進(jìn)行權(quán)限訪問控制時做了一個這樣的嘗試,即在action當(dāng)中進(jìn)行權(quán)限控制,它所控制的粒度可以到用戶的每個操作上,比如說增刪改查,當(dāng)然,我這里所說的權(quán)限是控制到功能級的,系統(tǒng)還沒有復(fù)雜到對實(shí)例級別的控制。
          具體的例子如下:先定義一個BaseDispatchAction,此類繼承Struts當(dāng)中的DispatchAction,其中有個權(quán)限檢查的方法  
          protected boolean checkPermit(HttpServletRequest request, String funcId,String operationId)

          funcId指的是當(dāng)前的欄目,operationId為當(dāng)前欄目的功能操作ID,將功能ID與操作ID在checkPermit方法當(dāng)中與當(dāng)前用戶所在的角色資源進(jìn)行判斷,看是否符合當(dāng)前操作。
          比如具體到一個新增操作,可以在相對應(yīng)的功能操作表中定義對應(yīng)的操作ID。在接下來的具體某個action當(dāng)中,先繼承BaseDispatchAction,比如用戶管理模塊的UserManangeAction。然后在新增方法當(dāng)中加入如下代碼控制,   
          1//判斷是否有此方法的操作權(quán)限
          2String funcId = httpServletRequest.getParameter("funcId");
          3if (checkPermit(httpServletRequest, funcId, Constants.QUERY)) {
          4   return forwardError(actionMapping, httpServletRequest,"error.checkPermit");
          5}

          6

          這樣,對具體的某個功能操作就進(jìn)行了很好的控制。
          posted on 2005-08-15 13:41 nighthawk 閱讀(323) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 永善县| 四子王旗| 保山市| 南投县| 青神县| 搜索| 神池县| 太原市| 牙克石市| 宁蒗| 弋阳县| 濉溪县| 龙游县| 成安县| 额敏县| 阳东县| 阜平县| 海盐县| 澎湖县| 铁岭市| 德安县| 丹凤县| 邢台市| 额尔古纳市| 改则县| 庆阳市| 兴城市| 吉林省| 荆州市| 比如县| 宾川县| 曲松县| 子长县| 会东县| 青神县| 进贤县| 永济市| 两当县| 黄石市| 建湖县| 江孜县|