posts - 37,  comments - 53,  trackbacks - 0

          這幾天要用到一個(gè)簡(jiǎn)單的權(quán)限管理,本來想用struts-Menu簡(jiǎn)單搞定,但是很是郁悶的是不知道怎么樣將tomcat的角色應(yīng)用到struts-menu中,在網(wǎng)上搜了好久,終于在www.yahoo.com.cn中找了不知道是那位大俠的文章,在此感謝了,也希望能給他人方便,特轉(zhuǎn)貼到此:

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

          ?

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

          ?

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

          ?

          Tomcat中定義的Realm有如下幾種實(shí)現(xiàn):UserDatabaseRealm、JDBCRealm、JNDIRealm和JAASRealm。下載Tomcat解壓縮后默認(rèn)使用的是UserDatabaseRealm。該Realm從%CATALINA_HOME%/conf/tomcat-users.xml靜態(tài)文件中加載內(nèi)存,Tomcat運(yùn)行期間不會(huì)動(dòng)態(tài)加載。因此所有的用戶、角色和密碼都是在Tomcat啟動(dòng)之前配置好的,只存在于內(nèi)存中。修改tomcat-users.xml文件后必須重新啟動(dòng)Tomcat,該文件的具體配置請(qǐng)參考Tomcat手冊(cè)。

          ?

          本文要著重介紹的是JDBCRealm,該Realm使用關(guān)系數(shù)據(jù)庫(kù),能夠動(dòng)態(tài)訪問數(shù)據(jù)。用戶、角色和密碼都保存在數(shù)據(jù)庫(kù)中,一旦數(shù)據(jù)庫(kù)有變化,JDBCRealm會(huì)立即訪問。相應(yīng),JDBCRealm的設(shè)置需要數(shù)據(jù)庫(kù)的訪問參數(shù)。Tomcat5.0.28中給出了幾種數(shù)據(jù)庫(kù)的配置參數(shù),示例如下:

          ?

          <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是實(shí)現(xiàn)Realm的類名,對(duì)于JDBCRealm必須是org.apache.catalina.realm.JDBCRealm。

          ?

          debug設(shè)置調(diào)試信息的詳細(xì)程度等級(jí),0表示不調(diào)試,數(shù)字越大越詳細(xì)。

          ?

          digest是數(shù)據(jù)庫(kù)中密碼字段的加密摘要算法名稱,有SHA、MD2或MD5,默認(rèn)是cleartext,即不加密。

          ?

          driverName是數(shù)據(jù)庫(kù)訪問的JDBC驅(qū)動(dòng)

          ?

          connectionURL是數(shù)據(jù)庫(kù)訪問URL參數(shù)

          ?

          connectionName和connectionPassword是訪問數(shù)據(jù)庫(kù)的名稱和密碼

          userTable是web應(yīng)用中存儲(chǔ)用戶信息的表名

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

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

          userRoleTable是將用戶角色映射表名

          roleNameCol是角色表中存儲(chǔ)角色名稱的字段名

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

          ?

          posted on 2006-04-12 10:26 雪地孤鴻 閱讀(791) 評(píng)論(0)  編輯  收藏 所屬分類: STRUTS

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


          網(wǎng)站導(dǎo)航:
           
          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(17)

          隨筆分類

          隨筆檔案

          文章檔案

          blog

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 临清市| 古田县| 郯城县| 隆子县| 铁岭县| 高雄市| 教育| 宁乡县| 布尔津县| 隆子县| 绍兴县| 红河县| 宜兰市| 板桥市| 普格县| 东方市| 浑源县| 沙田区| 鄂温| 苏尼特右旗| 竹溪县| 华亭县| 双城市| 榆树市| 长春市| 孙吴县| 武强县| 余庆县| 涟水县| 涿州市| 资兴市| 安溪县| 中西区| 虎林市| 永福县| 札达县| 万荣县| 辉县市| 北流市| 洪江市| 吉首市|