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

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            25 Posts :: 13 Stories :: 26 Comments :: 0 Trackbacks
          權(quán)限控制是每個(gè)項(xiàng)目必不可少的一塊。在最近的一個(gè)MVC模式(Struts)的實(shí)踐當(dāng)中,在進(jìn)行權(quán)限訪問(wèn)控制時(shí)做了一個(gè)這樣的嘗試,即在action當(dāng)中進(jìn)行權(quán)限控制,它所控制的粒度可以到用戶的每個(gè)操作上,比如說(shuō)增刪改查,當(dāng)然,我這里所說(shuō)的權(quán)限是控制到功能級(jí)的,系統(tǒng)還沒(méi)有復(fù)雜到對(duì)實(shí)例級(jí)別的控制。
          具體的例子如下:先定義一個(gè)BaseDispatchAction,此類繼承Struts當(dāng)中的DispatchAction,其中有個(gè)權(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)前操作。
          比如具體到一個(gè)新增操作,可以在相對(duì)應(yīng)的功能操作表中定義對(duì)應(yīng)的操作ID。在接下來(lái)的具體某個(gè)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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 闻喜县| 西宁市| 武功县| 恭城| 桐乡市| 双流县| 陆河县| 红原县| 姚安县| 密山市| 密云县| 巴中市| 盘锦市| 盐亭县| 二连浩特市| 扎鲁特旗| 巴青县| 西贡区| 敖汉旗| 威宁| 庄浪县| 师宗县| 新化县| 宁海县| 正定县| 甘孜县| 惠安县| 元朗区| 潼南县| 淮南市| 凤庆县| 宁乡县| 凤山市| 湘阴县| 于田县| 奉贤区| 巧家县| 洛川县| 海兴县| 东阿县| 富顺县|