posts - 14,  comments - 37,  trackbacks - 0

          剛剛接觸Struts Menu的時候,對Struts Menu基于角色的菜單顯示很好理解,但是如何將web應用中的角色管理映射到Struts Menu中,是困擾筆者良久的問題。經過摸索,在查閱了Tomcat的手冊之后,筆者找到了答案。

           

           

          Servlet容器和web應用都可以控制web應用資源的安全,因此Tomcat管理域有容器管理和應用程序管理兩種,默認使用容器管理。通常web應用中使用的登陸ServletJSP則是應用程序管理。這就涉及到Realm的概念。

           

           

          Tomcat%CATALINA_HOME%/conf/server.xml文件中配置Realm,結合在%CATALINA_HOME%/WEB-INF/mywebapp/web.xml文件中配置的<security-constraint>,定義了存儲用戶和角色的信息,以及進行用戶驗證的方式。

           

           

          Tomcat中定義的Realm有如下幾種實現:UserDatabaseRealm、JDBCRealm、JNDIRealmJAASRealm。下載Tomcat解壓縮后默認使用的是UserDatabaseRealm。該Realm%CATALINA_HOME%/conf/tomcat-users.xml靜態文件中加載內存,Tomcat運行期間不會動態加載。因此所有的用戶、角色和密碼都是在Tomcat啟動之前配置好的,只存在于內存中。修改tomcat-users.xml文件后必須重新啟動Tomcat,該文件的具體配置請參考Tomcat手冊。

           

           

          本文要著重介紹的是JDBCRealm,該Realm使用關系數據庫,能夠動態訪問數據。用戶、角色和密碼都保存在數據庫中,一旦數據庫有變化,JDBCRealm會立即訪問。相應,JDBCRealm的設置需要數據庫的訪問參數。Tomcat5.0.28中給出了幾種數據庫的配置參數,示例如下:

           

           

          <Realm className="org.apache.catalina.realm.JDBCRealm"

           

           

          debug="99" digest="MD5"

           

           

                       driverName="oracle.jdbc.driver.OracleDriver"

           

           

                    connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"

           

           

                   connectionName="scott" connectionPassword="tiger"

           

           

                        userTable="users" userNameCol="user_name" userCredCol="user_pass"

           

           

                    userRoleTable="user_roles" roleNameCol="role_name" />

           

           

           

           

           

          屬性說明如下:

          className是實現Realm的類名,對于JDBCRealm必須是org.apache.catalina.realm.JDBCRealm。

           

           

          debug設置調試信息的詳細程度等級,0表示不調試,數字越大越詳細。

           

           

          digest是數據庫中密碼字段的加密摘要算法名稱,有SHA、MD2MD5,默認是cleartext,即不加密。

           

           

          driverName是數據庫訪問的JDBC驅動

           

           

          connectionURL是數據庫訪問URL參數

           

           

          connectionNameconnectionPassword是訪問數據庫的名稱和密碼

          userTableweb應用中存儲用戶信息的表名

          userNameCol是用戶信息表中存儲用戶登陸名稱的字段名

          userCredCol是用戶信息表中存儲用戶登陸密碼的字段名

          userRoleTable是將用戶角色映射表名

          roleNameCol是角色表中存儲角色名稱的字段名

          有了這些定義,web應用中定義的用戶和角色就可以在Struts Menu中,用于配置基于角色可見與否的菜單。

          posted on 2007-07-11 10:12 冰封的愛 閱讀(139) 評論(0)  編輯  收藏 所屬分類: J2EE
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 六盘水市| 桂林市| 莫力| 牙克石市| 顺义区| 宁武县| 工布江达县| 定南县| 曲松县| 澳门| 忻城县| 德安县| 万年县| 新安县| 潞西市| 南木林县| 泰州市| 诸暨市| 方山县| 平陆县| 元朗区| 水富县| 荔浦县| 卓资县| 太谷县| 和平区| 九龙坡区| 阳泉市| 周至县| 龙口市| 博乐市| 宁阳县| 古浪县| 晋江市| 紫金县| 蓝田县| 宜兰市| 霍林郭勒市| 佛山市| 正蓝旗| 和林格尔县|