積累,創(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 閱讀(323) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 忻州市| 全州县| 赫章县| 互助| 博客| 保定市| 乌恰县| 孟州市| 育儿| 温州市| 抚松县| 庄河市| 麟游县| 定安县| 普兰店市| 龙游县| 红桥区| 保靖县| 嘉定区| 长武县| 庐江县| 白河县| 临猗县| 枣阳市| 丹寨县| 鄯善县| 淮北市| 莱州市| 山东省| 开平市| 周口市| 从江县| 若羌县| 贵南县| 琼海市| 漯河市| 余姚市| 弋阳县| 广宗县| 泽普县| 冷水江市|