KAY

          人之所以能,是相信能。
          posts - 6, comments - 5, trackbacks - 0, articles - 11
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          struts中權限問題

          Posted on 2007-04-05 15:55 KAY 閱讀(166) 評論(0)  編輯  收藏
          關于web系統的權限限定問題,可能有很多的辦法,我在這里說一下自己的一些小技巧,起到拋磚引玉的作用,忘各位指正:
              系統中一個角色包含多個用戶,角色和用戶之間最好采用一對多,以免發生混亂;
              自系統初起的時候,系統只有一個超級用戶(例如root),有兩個默認角色,即游客角色和注冊用戶角色;
              超級用戶可以在后續管理中添加角色,默認角色不能刪除,其他角色的刪除中如果這個角色下有用戶,可以采取不允許刪除或刪除后這些用戶的角色自動轉為注冊用戶角色;
              每個角色用戶訪問系統某些功能模塊的權利,某個角色是否可以訪問某個功能模塊可以由超級用戶修改,這里也包括默認角色所對應的權限模塊;
              角色與系統模塊之間是多對多的關系,即一個角色可以訪問多個模塊,一個模塊可能有多個角色訪問;

              我們這里主要談struts,一個模塊包含多個action,action和模塊是多對一的關系;
              這樣用戶訪問某個action時會映射到系統的某個模塊,這是系統取出當前用戶所在的角色,看看這個角色是否有訪問此模塊的權限,即可以實現struts中的權限設定;
          這一過程主要包含以下幾塊:
          1.系統的各個模塊在系統開發完畢后就會形成,這些模塊信息保存在持久媒體中;
          2.struts-config.xml中,每個action的配置中都有一個role屬性,這個屬性中填寫一個模塊的名稱,這樣就建立起了action與模塊的多對一關系;
          3.用戶、角色、模塊之間的映射關系通過數據庫表間的映射,這里就不再多說;
          4.擴展struts中的requestProcessor類(注意如果使用tiles框架,需要繼承另外一個tiles專用的類),復寫其中的processorRole方法(其他方法也很有用,例如preprocess方法,可以設置提交的字符串都為UTF-8,也可以用戶寫一些系統的訪問日志等等),在這個方法中可以取出當前action的模塊名稱和當前用戶的角色,這樣就可以實現對于用戶的權限限定了。

              這樣就可以實現權限限定了,這個方法的優點是即便是從某些地方找到下載或者訪問某些重要功能的鏈接仍然可以攔截,缺點是每次訪問都需要判定,但做好適當的緩存即可,如何做緩存因各系統而異;如果有特殊需要還可以限定ip,甚至一個session對應一個id,如果換了ip則session立即銷毀,防止用戶轉貼了sessionid所假冒的用戶。

          今天比較暈,很少寫這么長的文章,大家先湊合看,有什么問題歡迎指出,我會盡快修正。

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


          網站導航:
           
          QQ:
          254653340
          MSN:
          xf_chouyang@hotmail.com
          主站蜘蛛池模板: 隆子县| 阜宁县| 宜兴市| 青神县| 桦甸市| 固安县| 建昌县| 诸暨市| 肃北| 栾川县| 志丹县| 东丰县| 蒲江县| 庄河市| 方城县| 盈江县| 新源县| 锡林浩特市| 山西省| 宁都县| 全南县| 瑞金市| 岑溪市| 仁寿县| 南乐县| 莱西市| 东海县| 遵化市| 丰台区| 拉萨市| 桓台县| 沽源县| 临泽县| 永州市| 溧水县| 东莞市| 股票| 微山县| 南皮县| 万年县| 庄浪县|