<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23,comments - 12,trackbacks - 0

    Translated by Caiyi0903(Willpower),2004.4.23

    在任何一種WEB應(yīng)用開(kāi)發(fā)中,不論大中小規(guī)模的,每個(gè)開(kāi)發(fā)者都會(huì)遇到一些需要保護(hù)程序數(shù)據(jù)的問(wèn)題,涉及到用戶的LOGIN ID和PASSWORD。那么如何執(zhí)行驗(yàn)證方式更好呢?實(shí)際上,有很多方式來(lái)實(shí)現(xiàn)。在本文里,我們不會(huì)把所有的驗(yàn)證方法都考慮到,我們的目的是讓你學(xué)會(huì)如何以最簡(jiǎn)單最方便的驗(yàn)證方法來(lái)完成。下面將討論基本的(BASIC)和基于表單的(FORM-BASED)驗(yàn)證方式。我們考慮使用TOMCAT作為WEB SERVER,它通過(guò)server.xml和web.xml文件提供基本的和基于表單的驗(yàn)證。JSP頁(yè)面中的j_security_check 表單(for FORM-based) 需要兩個(gè)參數(shù):j_username和j_password。它們指定了在SQL數(shù)據(jù)庫(kù)中的登陸角色。你能夠看到,它的彈性化,可用性和必要性。

    第一步,我們要下載TOMCAT和MYSQL,前者用來(lái)做WEB SERVER,后者用來(lái)做SQL SERVER。還要下載JDBCRealm工具,它在TOMCAT中使用,用來(lái)做MYSQL連接器,連接MYSQL數(shù)據(jù)庫(kù)的。

    我們假設(shè)你已經(jīng)安裝了TOMCAT和MYSQL,那么我們開(kāi)始從SERVER的配置入手了。當(dāng)然,你還需要安裝JAVA的MYSQL連接驅(qū)動(dòng),我強(qiáng)烈建議只使用穩(wěn)定的驅(qū)動(dòng)版本,因?yàn)樵谟行┣闆r下,alpha/beta版本的驅(qū)動(dòng)不能正常工作。

    下面我們來(lái)操作SQL數(shù)據(jù)庫(kù)。老實(shí)說(shuō),MYSQL和TOMCAT是相當(dāng)好的工具,它們都是跨平臺(tái)的,不管你的操作系統(tǒng)是WINDOWS還是類似UNIX/LINUX的,它們都能正常運(yùn)行。因此,不論運(yùn)行環(huán)境,它們的配置過(guò)程都是絕對(duì)一樣的。

    MySQL
    在命令行中執(zhí)行mysql 客戶端命令,然后輸入:

    create database weblogin;
    這個(gè)將為你創(chuàng)建一個(gè)weblogin數(shù)據(jù)庫(kù),它將保存用戶名和密碼以及角色等一切信息。你對(duì)數(shù)據(jù)庫(kù)所做的任何改變都會(huì)直接立即反映出來(lái)。比如說(shuō)添加用戶,改變用戶密碼和角色等。


    create table users (
       login varchar (15) not null,
       pass varchar (15) not null,
       primary key (login)
    );

    我們創(chuàng)建一個(gè)users表用來(lái)保存用戶的LOGIN和PASSWORD:


    create tables groups (
       login varchar (15) not null,
       group varchar (15) not null,
       primary key (login, group)
    );

    如你看到的,我們要在group表里保存login屬于哪個(gè)group的信息。下面,我們要插于一些數(shù)據(jù)用來(lái)測(cè)試使用,并完成MYSQL的配置工作:

    insert into users  ('green', 'testpwd');
    insert into groups ('green', 'testgroup');


    現(xiàn)在,我們創(chuàng)建了一個(gè)用戶叫g(shù)reen,他的密碼是testpwd,他屬于testgroup這個(gè)用戶組。接著,輪到TOMCAT的配置了。

    Tomcat
    TOMCAT本身并沒(méi)有能力操作數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)身份驗(yàn)證。但是可以依靠JDBCRealm。下面我們來(lái)使用它。

    下面我們從TOMCAT的\conf\server.xml文件來(lái)開(kāi)始我們的配置。打開(kāi)這個(gè)文件并找到下面的內(nèi)容:

    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    刪除這一行,或者用<!-- ... --> 注釋掉它,我們要使用JDBCRealm。所以輸入下面的內(nèi)容:


    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
       driverName="org.gjt.mm.mysql.Driver"
       connectionURL="jdbc:mysql://localhost/weblogin?user=test&password=test"
       userTable="users" userNameCol="login" userCredCol="pass"
       userRoleTable="groups" roleNameCol="group" />

    下面我們對(duì)field參數(shù)做詳細(xì)講解:

    debug—這是我們?cè)O(shè)置的debug參數(shù),數(shù)字越高顯示信息越詳細(xì)。
    driverName—這個(gè)是MYSQL驅(qū)動(dòng)的名字。要確保這個(gè)驅(qū)動(dòng)的JAR包在TOMCAT的CLASSPATH中能夠找到它。
    connectionURL—這個(gè)是用來(lái)建立JDBC連接的數(shù)據(jù)庫(kù)URL。在這個(gè)field里,weblogin是我們數(shù)據(jù)庫(kù)的名字。user和password 是我們登陸數(shù)據(jù)庫(kù)的用戶數(shù)據(jù)。
    userTable—一個(gè)定義有userNameCol和userCredCol字段的表。
    userNameCol和userCredCol—users表里定義的login和pass。
    現(xiàn)在,我們完成了配置過(guò)程。下面,我們要配置WEB應(yīng)用程序來(lái)被這樣一個(gè)身份驗(yàn)證方式保護(hù)起來(lái)。我們要舉兩個(gè)例子。最簡(jiǎn)單的是基本身份驗(yàn)證方式,然后就是基于表單的身份驗(yàn)證。在第一種情況里,我們嘗試訪問(wèn)受保護(hù)的數(shù)據(jù),將會(huì)有一個(gè)POP-UP窗口彈出提示你輸入你的login和password。在第二種情況里,我們會(huì)通過(guò)頁(yè)面的方式來(lái)讓你通過(guò)身份驗(yàn)證。這個(gè)頁(yè)面的內(nèi)容可以是任意的,這個(gè)取決于你要使用怎么樣的驗(yàn)證方式了。

    基本身份驗(yàn)證方式(BASIC authorization method)
    我們假設(shè)應(yīng)用程序在TOMCAT的\webapps\webdemo, 我們要保護(hù)所有在admin 子目錄里的文件。我們必須打開(kāi)它的\webapps\webdemo\WEB-INF\web.xml文件,輸入下列內(nèi)容:


    <security-constraint>
       <web-resource-collection>
          <web-resource-name>Web Demo</web-resource-name>
          <url-pattern>/admin/*</url-pattern>
       </web-resource-collection>
       <auth-constraint>
          <role-name>testgroup</role-name>
       </auth-constraint>
    </security-constraint>
    <login-config>
       <auth-method>BASIC</auth-method>
       <realm-name>Web Demo</realm-name>
    </login-config>

    讓我們來(lái)看看剛才輸入的內(nèi)容。我們?yōu)閼?yīng)用程序創(chuàng)建了一個(gè)web-resource-name并映射到login-config 。我們還定義了url-pattern, 它指明你受保護(hù)程序的路徑。在login-conf中,我們定義了一個(gè)BASIC auth-method。

    很簡(jiǎn)單,對(duì)嗎?不要忘記了,在使改變生效前要停止并重啟TOMCAT。

    表單身份驗(yàn)證方式(FORM-based authorization method)
    對(duì)于這種方式,我們僅僅只需要:

    修改\webapps\webdemo\WEB-INF\web.xml
    創(chuàng)建一個(gè)登陸用的JSP頁(yè)面, 用戶將在這里的HTML表單中輸入他的登陸ID和密碼
    創(chuàng)建一個(gè)JSP error頁(yè)面,一旦驗(yàn)證失敗,用戶將跳到該頁(yè)面
    如果你先嘗試使用BASIC驗(yàn)證方式,你只需要改變login-config 為下面那一段代碼。否則,你需要輸入security-constraint代碼段。使用下面的login-config:


    <login-config>
       <auth-method>FORM</auth-method>
       <realm-name>Web Demo</realm-name>
       <form-login-config>
          <form-login-page>/admin/login.jsp</form-login-page>
          <form-error-page>/admin/error.jsp</form-error-page>
       </form-login-config>
    </login-config>

    我們?cè)O(shè)置表單的auth-method并定義了form-login-config。這個(gè)將使得TOMCAT使用 \admin\login.jsp頁(yè)面來(lái)讓用戶登陸,使用\admin\error.jsp頁(yè)面來(lái)處理登陸失敗。

    你可以使用任何你想要的出錯(cuò)信息。頁(yè)面唯一需要的就是下面的HTML表單標(biāo)簽,你要插到頁(yè)面中:


    ...
    <form method="POST" action="j_security_check">
       <input type="text" name="j_username">
       <input type="text" name="j_password">
       <input type="submit" value="Log in">
    </form>
    ...

    布局,風(fēng)格,或其他所有你喜歡的。這個(gè)error頁(yè)面能夠做成任何你想要的。無(wú)非就是通知用戶,驗(yàn)證失敗了。

    OK,全部完成了。你需要停止和重啟一遍T(mén)OMCAT使得改變生效。

    ? Olexiy Prokhorenko, http://www.7dots.com/resume/
    Co-author: Alexander Prohorenko

    posted on 2005-08-17 10:07 my java 閱讀(733) 評(píng)論(0)  編輯  收藏 所屬分類: java身份認(rèn)證轉(zhuǎn)帖
    主站蜘蛛池模板: 免费无码看av的网站| 激情无码亚洲一区二区三区| 亚洲精品成a人在线观看☆| 中文字幕免费在线| 亚洲AV无码1区2区久久| 国产免费无码一区二区| 亚洲成a人片在线观看无码专区 | 成人特级毛片69免费观看| 国产在线国偷精品产拍免费| 亚洲国产成人久久77| AV无码免费永久在线观看| 亚洲成aⅴ人片在线影院八| 84pao强力永久免费高清| 国产亚洲精品国产福利在线观看 | 一色屋成人免费精品网站| xxx毛茸茸的亚洲| 毛片免费在线视频| 激情无码亚洲一区二区三区| 亚洲AV永久无码精品| 日本最新免费网站| 亚洲欧洲专线一区| 免费a在线观看播放| 国产成人高清精品免费观看| 久久亚洲AV无码精品色午夜麻| 精品国产免费一区二区| 国产精品免费AV片在线观看| 亚洲一区二区三区免费视频| 国产a v无码专区亚洲av| 日本一卡精品视频免费| 美女视频黄免费亚洲| 亚洲精品NV久久久久久久久久| 国产一级a毛一级a看免费人娇| 亚洲一区二区在线视频| 免费国产作爱视频网站| 热久久这里是精品6免费观看| 亚洲人成毛片线播放| 亚洲AV永久青草无码精品| 久久久久无码专区亚洲av | 亚洲国产精品成人AV无码久久综合影院| 本免费AV无码专区一区| 狼人大香伊蕉国产WWW亚洲|